あの画像きれいだなー。とか。
あの色がほしい~~。とか。
画像を眺めていると思います。ついでに心も洗われますw
そんなこんなで、画像から色を取得したい場合、ペイント等で色を抽出することもできますが、せっかくなのでJavaで色を抽出してみたいと思います。
Youtube版はこちらからどうぞ
Youtubeで動画を公開しました。こちらもぜひぜひ。
こちらでは、もう少し詳しく紹介しています。
画像からピクセルの色を抽出するサンプル
「c:\test\test.jpeg」より、座標(10,20)の色を抽出します。
また、抽出したRGB値、アルファ値をそれぞれ標準出力します。
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.jpeg"; //画像ファイルを読み込む BufferedImage img = ImageIO.read(new File(filePath)); //座標(10,20)の色を取得 Color color = new Color(img.getRGB(10, 20)); //取得した色を標準出力 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(); } } } |
実行結果
RGB各色と、アルファ値が標準出力されます。
1 2 3 4 | R:254 G:198 B:141 A:255 |
ちなみに、読み込んだ画像はこちらです。
赤丸で囲んだあたりのピクセルから色を抽出しました。
標準出力した色をペイントで塗ってみたのがこちらです。似てますね♪(当たり前)
サンプルの解説
ImageIO#read(String)により読み込んだ画像は、BufferedImageオブジェクトに格納されます。
読み込んだイメージオブジェクトより、BufferedImage#getRGB(int,int)を使って、色を取得します。
引数には、色を取得したい画像の位置(座標)を指定します。
その後、Colorクラスを使って、Color#getRed()のようにRGB値、アルファ値を取得します。