ピクセル化効果の実行は、BufferedImage
.
これは、次の 2 つの手順で実行できます。
- ピクセル化の 1 つのブロックの色を決定します。
- 画像上のピクセル化のブロックを埋めます。
ステップ 1: 色を決定します。
public static Color determineColor(BufferedImage img, int x, int y, int w, int h) {
int cx = x + (int)(w / 2);
int cy = y + (int)(h / 2);
return new Color(img.getRGB(cx, cy), true);
}
このdetermineColor
メソッドでは、 の中心からのピクセル カラーBufferedImage
が決定され、呼び出し元に返されます。
ステップ 2: ピクセレーション ブロックを決定された色で塗りつぶします。
BufferedImage sourceImg = ...; // Source Image.
BufferedImage destimg = ...; // Destination Image.
Graphics g = destImg.createGraphics();
int blockSize = 8;
for (int i = 0; i < sourceImg.getWidth(); i += blockSize) {
for (int j = 0; j < sourceImg.getHeight(); j += blockSize) {
Color c = determineColor(sourceImg, i, j, blockSize, blockSize);
g.setColor(c);
g.fillRect(i, j, blockSize, blockSize);
}
}
g.dispose();
かなりの量のコードがありますが、この効果は知的には容易に達成できる成果です。進行中の複雑な処理はそれほど多くありません。基本的に、ブロックの中心の色を見つけて、その色でボックスを塗りつぶします。これはかなり素朴な実装なので、もっと良い方法があるかもしれません。
以下は、上記のピクセル化効果を実行する前後の比較です。
