Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不是';t java.awt.image.buffereImage是否可序列化?_Java_Image_Serialization_Awt - Fatal编程技术网

为什么不是';t java.awt.image.buffereImage是否可序列化?

为什么不是';t java.awt.image.buffereImage是否可序列化?,java,image,serialization,awt,Java,Image,Serialization,Awt,我试图用Java序列化一个buffereImage,但在运行我的程序时,我收到了一个NotSerializableException 查看BufferedImage类,我注意到它没有实现Serializable 为什么buffereImage不实现Serializable?我想您刚刚发现了一个缺少的功能 让缓冲区映像实现可序列化的有意义吗?在我看来是的。尤其是当缓冲区图像不是从文件加载的,而是创建和绘制的。但是,即使它来自一个文件,如果我想通过RMI或类似的方式在虚拟机之间交换,谁会在乎这些东

我试图用Java序列化一个
buffereImage
,但在运行我的程序时,我收到了一个
NotSerializableException

查看
BufferedImage
类,我注意到它没有实现
Serializable


为什么
buffereImage
不实现
Serializable

我想您刚刚发现了一个缺少的功能

  • 缓冲区映像实现可序列化的
    有意义吗?在我看来是的。尤其是当
    缓冲区图像
    不是从文件加载的,而是创建和绘制的。但是,即使它来自一个文件,如果我想通过RMI或类似的方式在虚拟机之间交换,谁会在乎这些东西来自哪里呢
  • BufferedImage
    中是否有任何内容为
    BufferedImage实现可序列化提供了强有力的技术理由?我浏览了源代码,我不这么认为
我检查了bug数据库是否已经包含了一个条目,但是我找不到任何相关的条目。因此,这是您通过bug数据库做出贡献并提出功能请求的机会


作为一种解决方法,您可能需要查看类
javax.swing.ImageIcon
readObject()和
writeObject()的实现<代码>图像图标
可序列化
。也许您可以为您的用例将
buffereImage
包装在
ImageIcon
中,或者以某种方式提供
ImageIcon.readObject()
/
ImageIcon.writeObject()

中的逻辑,我很高兴没有任何(或者至少很少)可序列化的BufferedXXX类,或者我觉得很相似。但知道为什么不能连载会很有趣。我认为这是因为它包含特定于arch的光栅数据和endian。@Fabio Bohnenberger尝试使用
int[]getRGB(..)
并序列化返回的整数数组而不是图像,当您反序列化数组时,尝试使用
setRGB(..)方法重新创建
buffereImage
BuffereImage可以通过平台特定的加速(如图形卡纹理内存)进行管理。序列化这些功能不是特别容易或有用。@FabioBohnenberger
ImageIcon
实际上是一个包含图像的swing组件,它是可序列化的,但不应该解决您的问题。你可能想检查一下。它显然不适用于
javax.swing.ImageIcon。
@Jean-FrançoisSavard为什么图像不能
序列化?图片与其他东西相比有什么特别之处?@Jean FrançoisSavard如果你已经有了文件,那么图片只是一个文件。如果你没有它,你需要它,你必须从其他地方得到它。图像根本不一定是文件:它们可以动态生成。“这真的没有任何意义。”让·弗朗索瓦·萨瓦德对不起,我觉得这个论点很荒谬。不知何故,您可以将所有内容都转换为文件,但这并不意味着序列化没有意义。根据这个定义,
javax.swing.text.html.HTMLDocument
也不应该是可序列化的。仅仅因为某些东西有一种或多种常用的文件格式并不意味着不应该提供直接序列化。我认为序列化主要是为了方便程序员在虚拟机之间交换数据,实际上不必将数据存储在单独的文件中,而只需转储对象图。保存到文件不是一个解决方案。例如,看看RMI。这两个虚拟机实际上可能没有访问同一个文件系统。因此,两个虚拟机之间需要有一个字节流。