使用Java按行或按像素读取/写入imag文件



我有一个带有图像数据的特定对象。我想要读/写图像(BMP,JPEG和PNG格式)到这个对象。

当然,我可以将图像读/写到BufferedImage中,然后将像素复制/粘贴到对象中但是,我想在没有中间对象的情况下做得更快

我如何在标准Java库上执行它,或者抛出其他Java库?

附言:
我知道pngj库,它允许逐行读取PNG图像。也许你们知道BMP、JPEG的相同库(或者所有这些库:BMP、JPEG、PNG)?

为什么不在Object中只包含BufferedImageBufferedImage并没有那么糟糕。否则,您将需要使用类似BufferedImage的东西来将图像文件转换为像素,然后将BufferedImage读取为类似int[]像素阵列的东西,但它仍然需要BufferedImage位于中间,这将通过添加额外的循环来读取和存储像素来减慢速度。

BufferedImage不适合您的目的有什么原因吗?

如果你想自己完成所有的读取,你可以用一个流打开文件并将其读取到一个数组中,但如果你使用压缩格式,你需要遍历文件的整个结构(头等),你也必须这样做。

最好是使用imageio加载/写入文件,我不认为读取/写入图像会带来很多开销。此外,如果您希望在图像上做一些繁重的工作,请知道BufferedImages可以是硬件加速的,这将大大提高性能。

最新更新