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

使用Java按行或像素读/写imag文件,java,image,file-io,Java,Image,File Io,我有一个带有图像数据的特定对象。我想在这个对象上读/写BMP、JPEG和PNG格式的图像 当然,我可以在BuffereImage中读取/写入图像,然后在对象中复制/粘贴像素。但是,我想在没有中间对象的情况下做得更快 如何在标准Java库或其他Java库上执行它 附言: 我知道这个库允许按行读取PNG图像。也许您知道BMP、JPEG或所有这些库的相同库:BMP、JPEG、PNG?如果您想自己完成所有读取,您可以用流打开文件并将其读取到数组中,但您需要遍历文件头的整个结构等。。。如果您使用的是压缩格

我有一个带有图像数据的特定对象。我想在这个对象上读/写BMP、JPEG和PNG格式的图像

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

如何在标准Java库或其他Java库上执行它

附言:
我知道这个库允许按行读取PNG图像。也许您知道BMP、JPEG或所有这些库的相同库:BMP、JPEG、PNG?

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

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

为什么不将BuffereImage放在对象中呢?BuffereImage并没有那么糟糕。否则,您将需要使用像BuffeReimige之类的东西来将图像文件转换为像素,然后将缓冲区读取到类似INT/[像素]数组中,但是它仍然需要中间的缓冲区,这将通过添加额外的循环来读取和存储像素来降低速度。


BuffereImage不适合您的用途,有什么原因吗?

为什么要更快地完成此操作,而不使用中间对象?您的程序中是否存在由Java库如何读取图像造成的实际瓶颈?当我使用中间对象时,我会花时间在内存中不必要的信息复制和内存分配上。因此,我认为直接读/写数据更好。这是在使用中间对象时,还是在Java库使用时?ImageIO不会不必要地复制内存中的信息。它的大部分信息共享将以复制指针的形式进行,这一过程不会花费很长时间。如果您的问题已得到回答,或者不再有效,请“勾选”以选择最合适的答案,以便所有人都知道问题已解决。谢谢。有些时候,我不需要所有图像的一部分就足够了,我看不出有任何理由把所有图像读入内存。我认为,如果存在一种简单的方法,可以通过线条或像素来读取图像,我应该试试。但也许你是对的——最简单的方法就是使用BuffereImage。