Java 图像图标参考故障

Java 图像图标参考故障,java,swing,pass-by-reference,pass-by-value,imageicon,Java,Swing,Pass By Reference,Pass By Value,Imageicon,我想通过值传递ImageIcon实例,因为我们知道默认情况下它是通过值传递引用。有什么办法解决这个问题吗 ImageIcon img1 = new ImageIcon(); ImageIcon img2 = new ImageIcon(); img1 = img2; // both share the same reference....... 我尝试使用ImageIcon的getImage()和setImage() 但实际上,我的程序包括将图像写入文件,图像的质量似乎在改变 简言之,有

我想通过值传递ImageIcon实例,因为我们知道默认情况下它是通过值传递引用。有什么办法解决这个问题吗

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

img1 = img2;   // both share the same reference.......
我尝试使用ImageIcon的
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(图像)

我维护了一个单独的java类,其中包含包含jpg图像的默认ImageIcon,我正在使用一些类方法从中检索图像,如

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.

如果要复制图像图标,可以尝试:
img2=newimageicon(img1.getImage())我会确保读入并写出.png(无损)图像,而不是.jpg(有损)图像

但这应该不会影响图像质量,我怀疑这会解决你的问题。我担心您的问题存在于未显示的代码中,您可能会通过调整图像大小或通过有损方法(如使用.jpg文件)存储和检索图像,或通过减少每像素的字节数来降低图像质量


如果你仍然有问题,考虑告诉我们更多的问题,因为我再次担心这个问题更多的是图像质量的损失,而不是共享引用。p> 主要的问题是图像的大小,是的……当然……清晰度……。@akp:你需要给我们更多的细节,因为你提供的代码和信息都不能告诉我们为什么这是一个问题。我的主要问题是通过值传递ImageIcon对象……避免引用问题……我尝试了u在您的回答中发布…….我对图像大小和质量有点问题……@akp:您一直在反复强调“按值传递ImageIcon对象”,而您真正的问题可能与此无关。你为什么认为这很重要?@akp:在引用的文章中有更多关于重采样的内容。它也不需要。我认为“参考/价值传递”问题在这里不是问题,真正的问题是图像质量。@HovercraftFullOfEels阅读了最新的帖子…@akp:什么最新的帖子?通过参考传递不会降低图像质量。它只会因从源中读取或写入的方式,或保存图像的图像类型而降级,或者你是否试图改变图像的大小或图像的其他特征——你没有告诉我们的事情。考虑创建和发布一个演示你的问题,因为到目前为止,我认为我们将没有运气能够帮助你提供的信息已经张贴。