我有一个带有图像数据的特定对象。我想要读/写图像(BMP,JPEG和PNG格式)到这个对象。
当然,我可以将图像读/写到BufferedImage
中,然后将像素复制/粘贴到对象中但是,我想在没有中间对象的情况下做得更快
我如何在标准Java库上执行它,或者抛出其他Java库?
附言:
我知道pngj库,它允许逐行读取PNG图像。也许你们知道BMP、JPEG的相同库(或者所有这些库:BMP、JPEG、PNG)?
为什么不在Object
中只包含BufferedImage
?BufferedImage
并没有那么糟糕。否则,您将需要使用类似BufferedImage
的东西来将图像文件转换为像素,然后将BufferedImage
读取为类似int[]
像素阵列的东西,但它仍然需要BufferedImage
位于中间,这将通过添加额外的循环来读取和存储像素来减慢速度。
BufferedImage
不适合您的目的有什么原因吗?
如果你想自己完成所有的读取,你可以用一个流打开文件并将其读取到一个数组中,但如果你使用压缩格式,你需要遍历文件的整个结构(头等),你也必须这样做。
最好是使用imageio加载/写入文件,我不认为读取/写入图像会带来很多开销。此外,如果您希望在图像上做一些繁重的工作,请知道BufferedImages可以是硬件加速的,这将大大提高性能。