public z_BufferedImage filter(z_BufferedImage src, z_BufferedImage dst) {
    int width = src.getWidth();
    int height = src.getHeight();

    if (dst == null) dst = new z_BufferedImage(width, height, z_BufferedImage.TYPE_INT_ARGB);

    int[] inPixels = new int[width * height];
    int[] outPixels = new int[width * height];
    getRGB(src, 0, 0, width, height, inPixels);

    for (int i = 0; i < iterations; i++) {
      blur(inPixels, outPixels, width, height, hRadius, 1);
      blur(outPixels, inPixels, height, width, vRadius, 2);
    }

    setRGB(dst, 0, 0, width, height, inPixels);
    return dst;
  }
 public z_Rectangle2D getBounds2D(z_BufferedImage src) {
   return new z_Rectangle2D(0, 0, src.getWidth(), src.getHeight());
 }
 public z_BufferedImage createCompatibleDestImage(z_BufferedImage src, z_ColorModel dstCM) {
   if (dstCM == null) dstCM = src.getColorModel(null);
   return new z_BufferedImage(dstCM, src.getWidth(), src.getHeight());
 }