解説動画
画像を加工する例です。グレースケール化と、文字・図形の追加です。
■動画はこちら
■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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class PixelColorTest3 { public static void main(String[] args) { try { //画像ファイルを読み込む BufferedImage imgOrg = ImageIO.read(new File("c:\\test\\hana.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(); //不透明度 //RGB各値の平均値を求める int colorAvg = (color.getRed() + color.getGreen() + color.getBlue()) / 3; //RGB各値の平均値をもとにカラーを再構築 Color color2 = new Color(colorAvg, colorAvg, colorAvg, colorAlpha); //コピー先の同一座標上にピクセルの色をセット imgNew.setRGB(x, y, color2.getRGB()); } } //画像ファイルを出力 ImageIO.write(imgNew, "png", new File("c:\\test\\hana1.png")); } catch (IOException e) { e.printStackTrace(); } } } |
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 49 50 51 52 53 54 55 56 57 58 59 60 | import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class ImageTest2 { public static void main(String[] args) { try { //画像ファイルを読み込む BufferedImage img = ImageIO.read(new File("c:\\test\\hana.png")); //描画操作のグラフィックスオブジェクトを取得 Graphics g = img.getGraphics(); //フォント指定 g.setFont(new Font("MS Pゴシック", Font.BOLD, 128)); // //描画(左上のほう) // //花 g.setColor(Color.WHITE); g.fillRect(100, 100, 140, 140); g.setColor(Color.BLACK); g.drawString("花", 105, 215); //は g.setColor(Color.YELLOW); g.fillOval(280, 100, 140, 140); g.setColor(Color.RED); g.drawString("は", 285, 215); //な g.setColor(Color.GREEN); g.fillRect(460, 100, 140, 140); g.setColor(Color.WHITE); g.drawString("な", 470, 215); //下線 g.drawLine(100, 270, 600, 270); //使い終わったので、グラフィックスを破棄 g.dispose(); //加工したイメージをファイル出力 ImageIO.write(img, "png", new File("c:\\test\\hana2.png")); }catch(Exception e) { e.printStackTrace(); } } } |