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

Java 旋转图像,而不将整个图像保存在内存中,java,image,image-processing,png,bufferedimage,Java,Image,Image Processing,Png,Bufferedimage,我正在使用库保存一个大的PNG文件(40000 x 3000)。现在我需要将图像向右旋转90度,而不将整个图像保存在内存中。PNGJ库仅限于逐行写入图像,因此我无法旋转每一行并逐列写入imagem 有办法吗 PNGJ库仅限于逐行写入图像 实际上,PNG格式是面向行的。如果不读取所有“先前”像素,就无法读取PNG图像的单个像素。所以,我猜你运气不好 我认为,如果你不能在内存中存储完整的图像,你所能做的就是通过K水平条纹加载并写入它。通过读取完整图像(仅存储每行的第一个像素,对应于旋转图像的第一个水

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

有办法吗

PNGJ库仅限于逐行写入图像

实际上,PNG格式是面向行的。如果不读取所有“先前”像素,就无法读取PNG图像的单个像素。所以,我猜你运气不好

我认为,如果你不能在内存中存储完整的图像,你所能做的就是通过
K
水平条纹加载并写入它。通过读取完整图像(仅存储每行的第一个像素,对应于旋转图像的第一个水平条纹的像素,丢弃其余像素),写入第一个条纹,然后再次读取文件以填充和写入第二个条纹,等等。 这涉及到原始文件的
K
读取(当然,您应该使条纹尽可能厚,以使
K
变小)。我希望你能明白


你可以用PNGJ来实现这一点。

你知道用其他格式来实现这一点的更好方法吗?好吧,使用非压缩格式(比如BMP),你可以随机读取像素(RandomAccessFile)。不过,我怀疑这是否比我上面提出的更好。