2009-06-17 4 views
10

x, y 좌표가 주어진 문자와 원을 그리려는 jpg 이미지를로드했습니다.자바를 통해 jpg 이미지를 편집하려면 어떻게해야합니까?

내가 원하는 방식으로이 방법은 나 JPG 이미지를 편집 할 수 있도록 않음 ImageIcon 클래스

public void paintIcon(Component c, 
         Graphics g, 
         int x, 
         int y) 

의 paintIcon을 알아 내기 위해 노력 해왔다? Component c 및 Graphics g 매개 변수는 무엇입니까? 서클이나 문자를 그리기 위해 몸에 무엇을 추가할까요?

Netbeans 6.5에서 작업 중입니다.이 작업을 위해 ImageIcon 대신 내장 된 것이 있습니까?

답변

15

순수한 자바 방법은 BufferedImageImageIOload에 이미지를 사용하는 것입니다 볼 수 있습니다. 그런 다음 createGraphics()으로 전화하여 Graphics2D 개체를 얻을 수 있습니다. 원하는 이미지를 원하는대로 그릴 수 있습니다.

당신은 표시 할 수있는 JLabel에 내장 된 ImageIcon를 사용할 수 있으며, 사용자가 이미지를 편집 할 수 있도록하려는 경우, 당신은 JLabelMouseListener 및/또는 MouseMotionListener를 추가 할 수 있습니다.

5

라이브러리를 사용하면됩니다. 시도해 볼 수있는 것은 JMagick입니다.

1

imagen 이미지를 UI로 그릴 때마다 필요한 요소를 오버레이하기 위해이 방법을 사용할 수 있습니다 (이 방법은 이미지 데이터를 그 자체로 그리지 않으므로 여러 번 발생합니다). 오버레이가 시간이 지남에 따라 변경되는 경우 유리합니다. 같은

뭔가 :

new ImageIcon("someUrl.png"){ 
    public void paintIcon(Component c, Graphics g, int x, int y) { 
     super(c, g, x, y); 
     g.translate(x, y); 

     g.drawOval(0, 0, 10, 10); 
     ... 

     g.translate(-x, -y); 
    } 
}; 

는 사용자가 이미지 데이터를 수정하려면 mmyers '대답은 훨씬 더 그런 말로 미루어 보아.

9

Java에서 이미지 조작은 Graphics 또는 Graphics2D 컨텍스트를 사용하여 수행 할 수 있습니다.

ImageIO 클래스를 사용하여 JPEG 및 PNG와 같은 이미지를로드 할 수 있습니다. 메서드는 (또는 수퍼 클래스 Graphics) 컨텍스트를 통해 이미지를 조작하는 데 사용할 수있는 BufferedImage을 반환하기 위해 File을 받아 들여 반환합니다.

Graphics2D 컨텍스트는 많은 이미지 그리기 및 조작 작업을 수행하는 데 사용할 수 있습니다. 정보 및 예를 보려면 Trail: 2D GraphicsThe Java Tutorials 인 것이 좋습니다.

는 JPEG 파일을 열고, 일부 원과 선을 그릴 것이다 (검증되지 않은) 단순화 된 예는 (예외는 무시됩니다)입니다 :

// Open a JPEG file, load into a BufferedImage. 
BufferedImage img = ImageIO.read(new File("image.jpg")); 

// Obtain the Graphics2D context associated with the BufferedImage. 
Graphics2D g = img.createGraphics(); 

// Draw on the BufferedImage via the graphics context. 
int x = 10; 
int y = 10; 
int width = 10; 
int height = 10; 
g.drawOval(x, y, width, height); 

g.drawLine(0, 0, 50, 50); 

// Clean up -- dispose the graphics context that was created. 
g.dispose(); 

JPEG 이미지를 열고과를 그릴 것입니다 위의 코드 타원형과 선.이러한 조작을 수행하여 이미지를 조작하면 Image의 서브 클래스이므로 BufferedImage은 다른 Image처럼 처리 할 수 ​​있습니다. 예를 들어, BufferedImage를 사용 ImageIcon을 만들어

, 하나 JButton 또는 JLabel (A) 내로 이미지를 포함 할 수

JLabel l = new JLabel("Label with image", new ImageIcon(img)); 
JButton b = new JButton("Button with image", new ImageIcon(img)); 

JLabelJButton을 둘 모두 ImageIcon 받아 생성자가 해당 될 수 있도록 Swing 구성 요소에 이미지를 추가하는 쉬운 방법입니다.

관련 문제