package filter.filters; import java.awt.Graphics; import java.awt.image.BufferedImage; import filter.base.ImageFilter; public class ShiftFilter extends ImageFilter { public int passes = 10; public float squareSize; public float distance; @Override public BufferedImage apply(BufferedImage img) { int size = (int) (squareSize * Math.min(img.getWidth(), img.getHeight())); int shift = (int) (distance * Math.min(img.getWidth(), img.getHeight())); for(int i = 0; i < passes; i++) { int x = (int) (rand.nextDouble() * (img.getWidth()-size)); int y = (int) (rand.nextDouble() * (img.getHeight()-size)); Graphics g = img.getGraphics(); g.copyArea(x, y, size, size, (int) ((rand.nextDouble()-.5) * shift), (int) ((rand.nextDouble()-.5) * shift)); } return img; } }