解説動画
画像ファイルから色を抽出&書きかえができる・・・ということは、画像を加工することができますね。
■動画はこちら
■Youtube版の解説で使用しているソースコード
動画と一緒にこちらも参考にどうぞ。
1つめ – 画像ファイルから色を抽出する –
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 | import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class PixelColorTest { public static void main(String[] args) { try { String filePath = "c:\\test\\test.png"; //画像ファイルを読み込む BufferedImage img = ImageIO.read(new File(filePath)); //座標(380,106)の色を取得 Color color = new Color(img.getRGB(380, 106)); //取得した色を標準出力 System.out.println("R:" + color.getRed()); System.out.println("G:" + color.getGreen()); System.out.println("B:" + color.getBlue()); System.out.println("A:" + color.getAlpha()); } catch (IOException e) { e.printStackTrace(); } } } |
2つめ – 画像ファイルから抽出した色をもとに、画像ファイルを生成 –
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 41 42 43 44 45 46 47 48 | import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class PixelColorTest2 { public static void main(String[] args) { try { //画像ファイルを読み込む BufferedImage imgOrg = ImageIO.read(new File("c:\\test\\test.png")); //コピー先の画像ファイル用のイメージを用意する BufferedImage imgNew = new BufferedImage(imgOrg.getWidth(),imgOrg.getHeight(), BufferedImage.TYPE_4BYTE_ABGR); //ピクセル単位で新しいイメージに色をコピー for(int y=0 ; y<imgOrg.getHeight() ; y++) { for(int x=0 ; x<imgOrg.getWidth() ; x++) { //座標(x,y)にあるピクセルの色を抽出(x=ヨコ y=タテ) Color color = new Color(imgOrg.getRGB(x, y)); //ピクセルの色の成分 int colorRed = color.getRed(); //赤 int colorGreen = color.getGreen(); //緑 int colorBlue = color.getBlue(); //青 int colorAlpha = color.getAlpha(); //アルファ値 //もとの色の成分をもとにカラーを再構築 Color color2 = new Color(colorRed, colorGreen, colorBlue, colorAlpha); //コピー先の同一座標上にピクセルの色をセット imgNew.setRGB(x, y, color2.getRGB()); } } //画像ファイルを出力 ImageIO.write(imgNew, "png", new File("c:\\test\\out.png")); } catch (IOException e) { e.printStackTrace(); } } } |