2012-06-30 6 views
4

ImageIcon 인스턴스를 값으로 전달하려면 기본적으로 값으로 전달 참조라는 것을 알고 있습니다. 이 문제를 해결할 방법이 있습니까? ImageIcon 참조 문제

ImageIcon img1 = new ImageIcon(); 
ImageIcon img2 = new ImageIcon(); 

img1 = img2; // both share the same reference....... 

나는 이미지 아이콘의 getImage()setImage()를 사용했습니다.

사실 내 프로그램에는 파일에 이미지를 쓰는 것이 포함되어 있으며 이미지의 품질은 변하는 것 같습니다. 한마디로

이있는

img1 = func(img2); // both do not share the same refernce. But the value is copied 

은 적어도 어떻게 getImage() 또는 setImage() 사용에 대한 정확한 이미지 품질을 유지할 수있는 기능을 사용하는 방법에 대한 방법은 무엇입니까?

요청에 따라 몇 가지 추가 정보.

내가 사용하고있는 것은 jpg 이미지이며 정확하게이 기능을 포함했습니다. image = img1.getimage();
img2.setImage (image);

나는 JPG 이미지를 containg 기본 이미지 아이콘을 보유하고 별도의 자바 클래스를 유지했고 당신이를 복사하려면 나는

ImageIcon defaulticon = new ImageIcon("d:\\default.jpg"); 
public void getdefaultimage(ImageIcon img) 
{ 
    img.setImage(defaulticon.getImage()); 
} 

// The class which I maintained specifically for this purpose is a pure java class. 
+2

[Java는 참조 전달을 지원하지 않습니다] (http://javadude.com/articles/passbyvalue.htm) – gobernador

+0

도 필요하지 않습니다. "참조/가치 전달"문제는 여기에서 논점이 아니며 실제 문제는 이미지 품질 중 하나라고 생각합니다. –

+0

@HovercraftFullOfEels 최신 게시물을 읽으십시오 ... –

답변

7

같은 클래스 메소드의 일부를 사용에서 이미지를 검색 해요 당신이 시도해 볼 수있는 ImageIcon : img2 = new ImageIcon(img1.getImage()); 나는 .jpg (손실) 이미지가 아니라 .png (무손실) 이미지를 읽고 썼는지 확인해야합니다.

하지만 이미지 품질에 영향을주지 않아야하며 문제를 해결할 수 있을지는 의문입니다. 나는 당신의 문제가 이미지의 크기를 줄이거 나 .jpg 파일과 같은 손실 방법을 통해 저장하고 검색하거나 픽셀 당 바이트 수를 줄임으로써 이미지 품질을 저하시킬 수 있다는 것을 보여주는 코드의 다른 부분에 있습니다.

그렇지 않은 경우 여전히 문제가있는 경우 참조 공유보다 이미지 품질이 떨어지는 것에 대해 다시 우려 할 수 있으므로 문제에 대해 자세히 알려주십시오.

+0

주요 문제는 이미지의 크기와 예 .... 물론 ... 선명도 ........... –

+3

@akp : 코드와 정보 중 아무 것도 알려주지 않았기 때문에 더 자세한 정보를 제공해야합니다. 왜 이것이 문제인지. –

+0

내 주요 문제는 가치에 의해 ImageIcon 개체를 전달하는 것입니다 ....... 참조 문제를 피하는 ... 나는 유 답변에 게시 된대로 방법을 시도 ....... 난 조금 했어. ...... –