진심 어제 여기 와보고 여기서는 답을 바라면 안되는걸 안된다는걸 지가 찾아서해야 한다는걸 깨달았지만...
어제부터 계속 해결 못하는거라 한번만 부탁할게...
RGB값이... 나오질 않아...
글구 ToolkitImage 레퍼런스 없는데...
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Panel;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import javax.swing.*;
public class ImageCanvas extends Frame implements ActionListener {
private Button openButton; // 버튼
private Image image; // 이미지
private TextField point;
//BufferedImage Bimg;
//Graphics gbuf;
public ImageCanvas() {
makeUI();
}
// UI 구성
private void makeUI() {
this.setTitle("Image Canvas");
this.setLayout(new BorderLayout());
this.setSize(800, 800);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
}
);
// 이미지 불러오기 버튼
Panel pnl = new Panel();
point = new TextField(10);
set--- (Color.gray);
this.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e){
point.setText("X:"+e.getX() + "Y:" + e.getY());
int ImgRGB = ((BufferedImage) image).getRGB(e.getX(), e.getY()); // 이미지 좌표별 RGB값 추출 // <이부분이 잘못된건가?
int red = (ImgRGB & 0x00FF0000) >> 16;
// 2^8으로 구성되어있는데, RGB로 구성있기 때문에 16만큼 쉬프트하면 RED
// 8만큼 쉬프트 하면 G
// 쉬프트를 하지 않으면 B 값을 추출할 수 있습니다.
// [R=2^8] [B=2^8] [G]
int green = (ImgRGB & 0x0000FF00) >> 8;
int blue = (ImgRGB & 0x000000FF);
point.setText("r: "+red+" ,g: "+green+" , b: "+blue);
}
private int getRGB(int x, int y) {
// TODO Auto-generated method stub
return 0;
}
}
);
//프레임에 배치
openButton = new Button("Load Image");
pnl.add(openButton);
add(point,"North");
openButton.addActionListener(this);
this.add(pnl, BorderLayout.SOUTH);
this.setVisible(true);
}
// 버튼 눌렸을 때 처리
public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == openButton) {
// 파일 선택 다이얼로그 생성
FileDialog fd = new FileDialog(this);
fd.setTitle("Select Image");
fd.setSize(300, 100);
fd.setVisible(true);
// 파일 선택 후 이미지 불러오기
loadImage(fd.getDirectory() + fd.getFile());
}
}
//이미지 불러오기
private void loadImage(String filePath) {
//파일 다이얼로그로부터 선택된 파일 경로로 이미지 파일 생성
Image img = Toolkit.getDefaultToolkit().getImage(filePath);
//null이 아니면 전역 변수에 할당
if (img != null) {
image = img;
//이미지 새로 그리기
repaint();
}
}
//그리는 메소드
public void paint(Graphics g) {
//이미지가 null이 아니면 이미지 그리기
if (image != null)
//파라미터: 이미지, X좌표, Y좌표, 이미지 관찰자(생략 가능)
//g.drawImage(image, 0, 50, this);
//파라미터: 이미지, X좌표, Y좌표, 이미지 가로 크기, 이미지 세로 크기, 이미지 관찰자(생략 가능)
//this는 Frame을 상속받은 ImageCanvas 객체 자체로서
//Frame으로부터 상속받은 가로와 세로의 크기를 알 수 있는 메소드를 사용 가능합니다.
g.drawImage(image, 0, 0, this.getWidth(), this.getHeight(), this);
}
public static void main(String[] args) {
new ImageCanvas();
}
}
삼촌팬
퓨..안되네... 이렇게 포기해야하나 제길..ㅋㅋㅋㅋ
응.. imageToBufferedImage(Image im) 여기서 오류 뜨넹..
다른곳에서 문젠건가?ㅋㅋㅋㅋ아... 진심 아직 아무것도 모르는 사람한티 이런거 시키니까 이거만 붙잡고 집밖을 못나가네 시벅거...
아이유는 양갈래 머리일떄 정말 뽈살 떠잉떠잉 해주고싶당 ㅜㅜ 본문내용 몰라서 뻘글 싸고가영
ㅋㅋㅋㅋㅋㅋㅋ미안해 형... 포기 안할게.. 근데 하..진짜 모르겠다..ㅠㅠㅋ 인터넷에서 찾아보려는 내용은 한계가있고... 형들이 조언해주면 조언해주는게 무슨말인지 모르겠어..ㅋㅋㅋㅋㅋㅋ
코드형 근데 마우스클릭이벤트에서 이미지의 RGB값 구하려고하는데 이미지를 불러오는게 마우스 클릭이벤트보다 밑에 코딩되있는데 이미지 불러온걸 인식하는건가??