Image image = イメージオブジェクトはすでに取得できているものとする int width = 元イメージ幅 int height = 元イメージ高さ int rwidth = 変換イメージ幅 int rheight = 変換イメージ高さ
BufferedImage bimg= new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR); Graphics gimg = bimg.createGraphics(); gimg.drawImage((Image)image,0,0,null); // BufferedImageに描画させる double scalew = (double)rc.width/(double)width; double scaleh = (double)rc.height/(double)height; AffineTransformOp atOp = null; atOp = new AffineTransformOp(AffineTransform.getScaleInstance(scalew, scaleh), AffineTransformOp.TYPE_BILINEAR); BufferedImage dest2 = new BufferedImage(rc.width, rc.height, bimg.getType()); int size = (int)(1.0/scalew); float[] kernelData = new float[size*size]; for (int i = 0; i < size * size; i++) { kernelData[i] = 1.0f / size / size; }
Kernel kernel = new Kernel(size, size, kernelData); ConvolveOp coOp = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null); BufferedImage inter = new BufferedImage(width, height, bimg.getType()); coOp.filter(bimg, inter); atOp.filter(inter, dest2);
|