ネガポジ反転と言えば、フィルムですね。
BufferedImageを使って、画像をネガポジ反転するサンプル
JPEG画像ファイルを読み込んで、ネガポジ反転。
反転した画像をJPEGファイルに保存します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class NegativeImageTest { public static void main(String[] args) { try { BufferedImage bi = ImageIO.read(new File("D:\\work\\input.jpg")); for(int j=0 ; j<bi.getHeight() ; j++) { for(int i=0 ; i<bi.getWidth() ; i++) { Color c = new Color(bi.getRGB(i, j)); c = editPixelColor(c); bi.setRGB(i, j, c.getRGB()); } } ImageIO.write(bi,"jpg",new File("D:\\work\\output.jpg")); } catch(Exception e) { e.printStackTrace(); } } private static Color editPixelColor(Color c) { int r = 255 - c.getRed(); int g = 255 - c.getGreen(); int b = 255 - c.getBlue(); int a = c.getAlpha(); return new Color(r,g,b,a); } } |
実行結果
元画像をネガポジ反転した画像ファイルが出力されます。
反転するとこんな感じです。
・元画像
・ネガポジ反転した画像
サンプルの解説
ネガポジ反転は、RGBの成分別に最大値(255)から引くだけです。
RGBに分解するには、Colorクラスを使います。