旋转图像而不将整个图像保存在内存中

时间:2017-04-25 18:18:59

标签: java image image-processing png bufferedimage

我使用PNGJ库保存了一个大型PNG文件(40000 x 3000)。现在我需要将图像向右旋转90度而不将整个图像保存在内存中。 PNGJ库仅限于逐行写入图像,因此我无法旋转每一行并逐列写入imagem。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:3)

  

PNGJ库仅限于逐行写入图像

实际上,它的PNG格式是面向行的。并且您无法读取所有"之前的"而无法读取PNG图像的单个像素。像素。所以,我猜你运气不好。

我认为,如果您无法将完整图像存储在内存中,那么您可以做的最好的事情就是通过K水平条纹加载和写入它。您通过读取完整图像填充第一个条带(您只存储每行的第一个像素,对应于旋转图像的第一个水平条纹的像素,丢弃其余部分),写入,然后再次读取文件填写并写第二个条纹等 这涉及原始文件的K读数(当然,您应该使条带与内存允许的一样厚,以使K变小。我希望你明白这一点。

你可以用PNGJ做到这一点。