在 RAM 中加载图像 "on the fly",而不使用硬盘
Load an image "on the fly" in RAM, without using the hard disk
可以从 Internet 获取文本(甚至解码字符串)并将其表示在 JLabel 中,而无需接触硬盘。
所以,我想知道是否有可能对图像做同样的事情。让我解释一下:
我想用 JLabel "on the fly" 中的十六进制表示法来表示图像,我的意思是,在 RAM 中,甚至不接触硬盘。我不是说从互联网上加载它,我的意思是像读取一个包含图像的十六进制代码的文件,将其转换为 ASCII 并以编程方式将其插入到 JLabel 中,就像它是一个文件一样。
这可能吗?我想我说的不是很清楚,但我希望你能理解我想说的。
是的,你可以。如果您从互联网加载图像,javax.swing.ImageIcon
构造函数接受 URL 作为参数,然后您将 ImageIcon
传递给 JLabel
。
针对您的澄清,是的,您仍然可以这样做。
有几个选项,这里有几个:
你仍然可以用上面的方法,使用"file://your/image/file"作为URL到ImageIcon
。
ImageIcon
也接受 byte[]
的图像数据。因此,您可以将常规文件读入 ByteArrayInputStream
并从中得到 byte[]
。
可以从 Internet 获取文本(甚至解码字符串)并将其表示在 JLabel 中,而无需接触硬盘。
所以,我想知道是否有可能对图像做同样的事情。让我解释一下:
我想用 JLabel "on the fly" 中的十六进制表示法来表示图像,我的意思是,在 RAM 中,甚至不接触硬盘。我不是说从互联网上加载它,我的意思是像读取一个包含图像的十六进制代码的文件,将其转换为 ASCII 并以编程方式将其插入到 JLabel 中,就像它是一个文件一样。
这可能吗?我想我说的不是很清楚,但我希望你能理解我想说的。
是的,你可以。如果您从互联网加载图像,javax.swing.ImageIcon
构造函数接受 URL 作为参数,然后您将 ImageIcon
传递给 JLabel
。
针对您的澄清,是的,您仍然可以这样做。
有几个选项,这里有几个:
你仍然可以用上面的方法,使用"file://your/image/file"作为URL到
ImageIcon
。ImageIcon
也接受byte[]
的图像数据。因此,您可以将常规文件读入ByteArrayInputStream
并从中得到byte[]
。