イメージサイズ変更3(画質重視)ConvolveOp・Javaの小技、サンプル、ニュースなどを紹介していきます。みんなで参考にしてください。

Ads by Google


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

イメージサイズ変更3(画質重視)ConvolveOp


イメージサイズ変更で、もっとも遅いですが、きれいな方法です。


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);


Copyright © Javaテクニカルサンプル集 All Rights Reserved.
FC2ブログ 一戸建て
相互リンクRANGER