質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.03%

画像を読み込み、色を抽出して、色を反映したい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 269

yasu_abu7

score 10

今回は、画像を読み込み、色をある座標で抽出して抽出した色をある座標に反映させたいです。

画像の読み込み。
色を座標で抽出。までができていますが、座標に色を反映させる方法はないでしょうか?
ソースコードは以下になります。

import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import java.awt.Color;
import java.io.IOException;


public class irohannei extends JFrame{

    /*
         保存した画像を読み込む 
         色を抽出する点の座標を使用し色を抽出する
         色反映 
    */

    static int x_0 = 205;
    static int x_1 = 260;
    static int x_2 = 320;
    static int x_3 = 390;
    static int x_4 = 440;
    static int x_5 = 265;
    static int x_6 = 320;
    static int x_7 = 380;
    static int x_8 = 320;

    static int y_0 = 165;
    static int y_1 = 195;
    static int y_2 = 170;
    static int y_3 = 185;
    static int y_4 = 165;
    static int y_5 = 270;
    static int y_6 = 290;
    static int y_7 = 270;
    static int y_8 = 360;

    int x1[] = {425,395,455,425};
    int y1[] = {510,450,450,510};

    int x2[] = {365,395,425,365};
    int y2[] = {390,450,390,390};


    int x3[] = {395,425,455,395};
    int y3[] = {450,390,450,450};

    int x4[] = {425,455,485,425};
    int y4[] = {390,450,390,390};

    int x5[] = {335,365,395,335};
    int y5[] = {330,390,330,330};

    int x6[] = {365,395,425,365};
    int y6[] = {390,330,390,390};

    int x7[] = {395,425,455,395};
    int y7[] = {330,390,330,330};

    int x8[] = {425,455,485,425};
    int y8[] = {390,330,390,390};

    int x9[] = {455,485,515,455};
    int y9[] = {330,390,330,330};

    /*二面*/
    int x10[] = {335,365,395,335};
    int y10[] = {330-2,270-2,330-2,330-2};

    int x11[] = {365,395,425,365};
    int y11[] = {270-2,330-2,270-2,270-2};

    int x12[] = {395,425,455,395};
    int y12[] = {330-2,270-2,330-2,330-2};

    int x13[] = {425,455,485,425};
    int y13[] = {270-2,330-2,270-2,270-2};

    int x14[] = {455,485,515,455};
    int y14[] = {330-2,270-2,330-2,330-2};

    int x15[] = {365,395,425,365};
    int y15[] = {270-2,210-2,270-2,270-2};

    int x16[] = {395,425,455,395};
    int y16[] = {210-2,270-2,210-2,210-2};

    int x17[] = {425,455,485,425};
    int y17[] = {270-2,210-2,270-2,270-2};

    int x18[] = {395,425,455,395};
    int y18[] = {210-2,150-2,210-2,210-2};

    /*三面*/
    int x19[] = {515+1,485+1,545+1,515+1};
    int y19[] = {330,390,390,330};

    int x20[] = {485+1,515+1,545+1,485+1};
    int y20[] = {390,450,390,390};

    int x21[] = {455+1,485+1,515+1,455+1};
    int y21[] = {450,390,450,450};

    int x22[] = {455+1,485+1,515+1,455+1};
    int y22[] = {450,510,450,450};

    int x23[] = {425+1,455+1,485+1,425+1};
    int y23[] = {510,450,510,510};

    int x24[] = {515+1,545+1,575+1,515+1};
    int y24[] = {450,390,450,450};

    int x25[] = {515+1,545+1,575+1,515+1};
    int y25[] = {450,510,450,450};

    int x26[] = {485+1,515+1,545+1,485+1};
    int y26[] = {510,450,510,510};

    int x27[] = {545+1,575+1,605+1,545+1};
    int y27[] = {510,450,510,510};

    /*四面*/
    int x28[] = {395-1,365-1,425-1,395-1};
    int y28[] = {450,510,510,450};

    int x29[] = {335-1,365-1,395-1,335-1};
    int y29[] = {450,510,450,450};

    int x30[] = {335-1,365-1,395-1,335-1};
    int y30[] = {450,390,450,450};

    int x31[] = {305-1,335-1,365-1,305-1};
    int y31[] = {390,450,390,390};

    int x32[] = {305-1,335-1,365-1,305-1};
    int y32[] = {390,330,390,390};

    int x33[] = {275-1,305-1,335-1,275-1};
    int y33[] = {450,390,450,450};

    int x34[] = {275-1,305-1,335-1,275-1};
    int y34[] = {450,510,450,450};

    int x35[] = {305-1,335-1,365-1,305-1};
    int y35[] = {510,450,510,510};

    int x36[] = {245-1,275-1,305-1,245-1};
    int y36[] = {510,450,510,510};

    public static void main(String[] args) {
        new irohannei().setVisible(true);

        File z = new File("rgby.jpg");
        BufferedImage read;
        try {
            read = ImageIO.read(z);

            Color color1 = new Color(read.getRGB(x_0, y_0));
            Color color2 = new Color(read.getRGB(x_1, y_1));
            Color color3 = new Color(read.getRGB(x_2, y_2));
            Color color4 = new Color(read.getRGB(x_3, y_3));
            Color color5 = new Color(read.getRGB(x_4, y_4));
            Color color6 = new Color(read.getRGB(x_5, y_5));
            Color color7 = new Color(read.getRGB(x_6, y_6));
            Color color8 = new Color(read.getRGB(x_7, y_7));
            Color color9 = new Color(read.getRGB(x_8, y_8));

            String a = String.valueOf(color1);
            String b = String.valueOf(color2);
            String c = String.valueOf(color3);
            String d = String.valueOf(color4);
            String e = String.valueOf(color5);
            String f = String.valueOf(color6);
            String g = String.valueOf(color7);
            String h = String.valueOf(color8);
            String i = String.valueOf(color9);

            System.out.println(color1);//5
            System.out.println(color2);//6
            System.out.println(color3);//7
            System.out.println(color4);//8
            System.out.println(color5);//9
            System.out.println(color6);//2
            System.out.println(color7);//3
            System.out.println(color8);//4
            System.out.println(color9);//1

        } catch (IOException e1) {

            e1.printStackTrace();
        }
    }

    public irohannei(){
        this.setSize(new Dimension(800,800));
        this.setTitle("色");
    }

public void paint(Graphics g){

        Font fg = new Font("SandSerif",Font.PLAIN,20);

        irohannei.main(null);

                //fillPolygon
                /*1面*/
                g.setColor(Color.GREEN);
                g.fillPolygon(x1, y1, 4);

                g.setColor(Color.GREEN);
                g.fillPolygon(x2, y2, 4);

                g.setColor(Color.BLUE);
                g.fillPolygon(x3, y3, 4);

                g.setColor(Color.YELLOW);
                g.fillPolygon(x4, y4, 4);

                g.setColor(Color.RED);
                g.fillPolygon(x5, y5, 4);

                g.setColor(Color.BLUE);
                g.fillPolygon(x6, y6, 4);

                g.setColor(Color.GREEN);
                g.fillPolygon(x7, y7, 4);

                g.setColor(Color.RED);
                g.fillPolygon(x8, y8, 4);

                g.setColor(Color.BLUE);
                g.fillPolygon(x9, y9, 4);

                /*2面*/
                g.setColor(Color.YELLOW);
                g.drawPolyline(x10, y10, 4);

                g.setColor(Color.GREEN);
                g.drawPolyline(x11, y11, 4);

                g.setColor(Color.BLUE);
                g.drawPolyline(x12, y12, 4);

                g.setColor(Color.YELLOW);
                g.drawPolyline(x13, y13, 4);

                g.setColor(Color.RED);
                g.drawPolyline(x14, y14, 4);

                g.setColor(Color.BLUE);
                g.drawPolyline(x15, y15, 4);

                g.setColor(Color.GREEN);
                g.drawPolyline(x16, y16, 4);

                g.setColor(Color.RED);
                g.drawPolyline(x17, y17, 4);

                g.setColor(Color.BLUE);
                g.drawPolyline(x18, y18, 4);

                /*3面*/
                g.setColor(Color.RED);
                g.drawPolyline(x19, y19, 4);

                g.setColor(Color.GREEN);
                g.drawPolyline(x20, y20, 4);

                g.setColor(Color.BLUE);
                g.drawPolyline(x21, y21, 4);

                g.setColor(Color.YELLOW);
                g.drawPolyline(x22, y22, 4);

                g.setColor(Color.GREEN);
                g.drawPolyline(x23, y23, 4);

                g.setColor(Color.BLUE);
                g.drawPolyline(x24, y24, 4);

                g.setColor(Color.GREEN);
                g.drawPolyline(x25, y25, 4);

                g.setColor(Color.RED);
                g.drawPolyline(x26, y26, 4);

                g.setColor(Color.BLUE);
                g.drawPolyline(x27, y27, 4);
                /*4面*/
                g.setColor(Color.BLUE);
                g.drawPolyline(x28, y28, 4);

                g.setColor(Color.GREEN);
                g.drawPolyline(x29, y29, 4);

                g.setColor(Color.BLUE);
                g.drawPolyline(x30, y30, 4);

                g.setColor(Color.YELLOW);
                g.drawPolyline(x31, y31, 4);

                g.setColor(Color.GREEN);
                g.drawPolyline(x32, y32, 4);

                g.setColor(Color.BLUE);
                g.drawPolyline(x33, y33, 4);

                g.setColor(Color.GREEN);
                g.drawPolyline(x34, y34, 4);

                g.setColor(Color.RED);
                g.drawPolyline(x35, y35, 4);

                g.setColor(Color.BLUE);
                g.drawPolyline(x36, y36, 4);
    }
}


わかる方の返答お待ちしています。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

自分で試行錯誤した結果、うまくできました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.03%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る