ピクセル化エフェクトを実行することは、BufferedImage
で低掛けの果物操作です。
これは、2つのステップで行うことができる。
- は、ピクセル化の一つのブロックの色を決定します。
- イメージのピクセル化ブロックを入力します。
ステップ1:色を決定する:determineColor
方法において
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);
}
、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();
コードのかなりがあるが、この効果は、知的低ぶら下げ果実である - はるかに複雑なことがありません続行中です。基本的にブロックの中央の色を見つけ、その色でボックスを塗りつぶしています。これはかなり単純な実装なので、より良い方法があるかもしれません。
次は前で、上記ピクセレーション効果を実行する比較後:(例えば煙用)
Non-pixelated image http://coobird.net/img/grad64.pngPixelated image http://coobird.net/img/grad64p.png
モーションブラーは、2Dでとても素敵に見えるようにすることができ、非常に簡単に実現できます。 – shoosh
ありがとう、私はそれを使用します! あなたが知っているような効果はこれ以上ありませんか? –