public BufferedImage filter( BufferedImage src, BufferedImage dst ) { int width = src.getWidth(); int height = src.getHeight(); int type = src.getType(); WritableRaster srcRaster = src.getRaster(); if ( dst == null ) dst = createCompatibleDestImage( src, null ); WritableRaster dstRaster = dst.getRaster(); setDimensions( width, height); int[] inPixels = new int[width]; for ( int y = 0; y < height; y++ ) { // We try to avoid calling getRGB on images as it causes them to become unmanaged, causing horrible performance problems. if ( type == BufferedImage.TYPE_INT_ARGB ) { srcRaster.getDataElements( 0, y, width, 1, inPixels ); for ( int x = 0; x < width; x++ ) inPixels[x] = filterRGB( x, y, inPixels[x] ); dstRaster.setDataElements( 0, y, width, 1, inPixels ); } else { src.getRGB( 0, y, width, 1, inPixels, 0, width ); for ( int x = 0; x < width; x++ ) inPixels[x] = filterRGB( x, y, inPixels[x] ); dst.setRGB( 0, y, width, 1, inPixels, 0, width ); } } return dst; }
public BufferedImage filter( BufferedImage src, BufferedImage dst ) { float d = (1-density) * (1+softness); minDensity = d-softness; maxDensity = d; randomNumbers = new Random( 0 ); return super.filter( src, dst ); }
@Override public BufferedImage filter(BufferedImage src, BufferedImage dst) { int width = src.getWidth(); int height = src.getHeight(); setDimensions(width, height); if (dst == null) { dst = createCompatibleDestImage(src, null); } if (src.getType() == BufferedImage.TYPE_BYTE_GRAY) { return grayFilter(src, dst); } int[] inPixels = ImageUtils.getPixelsAsArray(src); int[] outPixels = ImageUtils.getPixelsAsArray(dst); pt = createProgressTracker(height); Future<?>[] futures = new Future[height]; for (int y = 0; y < height; y++) { int finalY = y; Runnable calculateLineTask = () -> { for (int x = 0; x < width; x++) { int index = finalY * width + x; outPixels[index] = filterRGB(x, finalY, inPixels[index]); } }; futures[y] = ThreadPool.submit(calculateLineTask); } ThreadPool.waitToFinish(futures, pt); finishProgressTracker(); return dst; }
public void setDimensions(int width, int height) { this.width = width; this.height = height; super.setDimensions(width, height); }
public BufferedImage grayFilter(BufferedImage src, BufferedImage dst) { int width = src.getWidth(); int height = src.getHeight(); pt = createProgressTracker(height); Future<?>[] futures = new Future[height]; for (int y = 0; y < height; y++) { int finalY = y; Runnable calculateLineTask = () -> { int[] inPixels = new int[width]; src.getRGB(0, finalY, width, 1, inPixels, 0, width); for (int x = 0; x < width; x++) { inPixels[x] = filterRGB(x, finalY, inPixels[x]); } dst.setRGB(0, finalY, width, 1, inPixels, 0, width); }; futures[y] = ThreadPool.submit(calculateLineTask); } ThreadPool.waitToFinish(futures, pt); finishProgressTracker(); return dst; }
@Override public void setDimensions(int width, int height) { this.width = width; this.height = height; super.setDimensions(width, height); }
public BufferedImage filter( BufferedImage src, BufferedImage dst ) { int width = src.getWidth(); int height = src.getHeight(); int type = src.getType(); WritableRaster srcRaster = src.getRaster(); if ( dst == null ) dst = createCompatibleDestImage( src, null ); WritableRaster dstRaster = dst.getRaster(); setDimensions( width, height); int[] inPixels = new int[width]; for ( int y = 0; y < height; y++ ) { // We try to avoid calling getRGB on images as it causes them to become unmanaged, causing horrible performance problems. if ( type == BufferedImage.TYPE_INT_ARGB ) { srcRaster.getDataElements( 0, y, width, 1, inPixels ); for ( int x = 0; x < width; x++ ) inPixels[x] = filterRGB( x, y, inPixels[x] ); dstRaster.setDataElements( 0, y, width, 1, inPixels ); } else { src.getRGB( 0, y, width, 1, inPixels, 0, width ); for ( int x = 0; x < width; x++ ) inPixels[x] = filterRGB( x, y, inPixels[x] ); dst.setRGB( 0, y, width, 1, inPixels, 0, width ); } } return dst; }
public void setDimensions(int width, int height) { this.width = width; this.height = height; super.setDimensions(width, height); }
@Override public BufferedImage filter(BufferedImage src, BufferedImage dst) { cx = src.getWidth() / 2.0f; cy = src.getHeight() / 2.0f; return super.filter(src, dst); }
public void setDimensions(int width, int height) { this.width = width; this.height = height; icentreX = centreX*width; icentreY = centreY*height; super.setDimensions(width, height); }
public BufferedImage filter( BufferedImage src, BufferedImage dst ) { if (!initialized) initialize(); return super.filter( src, dst ); }
public void setDimensions(int width, int height) { this.width = width; this.height = height; centreX = width/2; centreY = height/2; super.setDimensions(width, height); randomNumbers.setSeed(seed); rayLengths = new float[rays]; for (int i = 0; i < rays; i++) rayLengths[i] = radius + randomness / 100.0f * radius * (float)randomNumbers.nextGaussian(); }
public BufferedImage filter( BufferedImage src, BufferedImage dst ) { if (!initialized) initialize(); return super.filter( src, dst ); }
@Override public void setDimensions(int width, int height) { // this.width = width; // this.height = height; centreX = (int) (width * relativeCentreX); centreY = (int) (height * relativeCentreY); super.setDimensions(width, height); // random.setSeed(seed); rayLengths = new float[rays]; for (int i = 0; i < rays; i++) { rayLengths[i] = radius + randomness / 100.0f * radius * (float) random.nextGaussian(); } power = (100 - amount) / 50.0; }
public BufferedImage filter( BufferedImage src, BufferedImage dst ) { fBm = makeFBM(H, lacunarity, octaves); return super.filter( src, dst ); }
public BufferedImage filter( BufferedImage src, BufferedImage dst ) { dst = new GaussianFilter( (int)radius ).filter( src, null ); lowerThreshold3 = 255*3*(threshold - softness*0.5f); upperThreshold3 = 255*3*(threshold + softness*0.5f); return super.filter(dst, dst); }
public BufferedImage filter( BufferedImage src, BufferedImage dst ) { dst = new GaussianFilter( (int)radius ).filter( src, null ); lowerThreshold = 255*(threshold - softness*0.5f); upperThreshold = 255*(threshold + softness*0.5f); return super.filter(dst, dst); }
g.drawImage( skyColors, 0, 0, dst.getWidth(), dst.getHeight(), t, 0, t+1, 64, null ); g.dispose(); BufferedImage clouds = super.filter( dst, dst );
public BufferedImage filter( BufferedImage src, BufferedImage dst ) { lut = new int[256]; for ( int i = 0; i < 128; i++ ) { float t = i / 127.0f; lut[i] = ImageMath.mixColors( t, shadowColor, midColor ); } for ( int i = 128; i < 256; i++ ) { float t = (i-127) / 128.0f; lut[i] = ImageMath.mixColors( t, midColor, highColor ); } dst = super.filter( src, dst ); lut = null; return dst; }
@Override public BufferedImage filter( BufferedImage src, BufferedImage dst ) { lut = new int[256]; for ( int i = 0; i < 128; i++ ) { float t = i / 127.0f; lut[i] = ImageMath.mixColors( t, shadowColor, midColor ); } for ( int i = 128; i < 256; i++ ) { float t = (i-127) / 128.0f; lut[i] = ImageMath.mixColors( t, midColor, highColor ); } dst = super.filter( src, dst ); lut = null; return dst; }