在Java中旋转tiff图像的最干净、最有效的技术?

在Java中旋转tiff图像的最干净、最有效的技术?,java,image,image-processing,tiff,jai,Java,Image,Image Processing,Tiff,Jai,我正在将tiff图像文件从一个目录复制到另一个目录,需要将它们顺时针旋转90度以更正其页面方向。这些图像是技术图纸,质量已经不高,所以我需要使用尽可能无损的技术。每天批处理的图形可能有数千个,因此内存和时间效率也是两个考虑因素 我很少做图像处理,所以我不太熟悉这方面的可用库。读了一些书后,我想用JAI的“转置”: 使用过这种技术的人能从功能或效率方面推荐或反对它吗 对其他方法有什么建议吗?您可以使用以下方法: PlanarImage pi = PlanarImage.wrapRenderedI

我正在将tiff图像文件从一个目录复制到另一个目录,需要将它们顺时针旋转90度以更正其页面方向。这些图像是技术图纸,质量已经不高,所以我需要使用尽可能无损的技术。每天批处理的图形可能有数千个,因此内存和时间效率也是两个考虑因素

我很少做图像处理,所以我不太熟悉这方面的可用库。读了一些书后,我想用JAI的“转置”:

使用过这种技术的人能从功能或效率方面推荐或反对它吗


对其他方法有什么建议吗?

您可以使用以下方法:

PlanarImage pi = PlanarImage.wrapRenderedImage(image);
        BufferedImage bi = pi.getAsBufferedImage();
        AffineTransform at = new AffineTransform();
        at.translate(-(image.getWidth() - image.getHeight()) / 2, (image.getWidth() - image.getHeight()) / 2);
        at.rotate(Math.toRadians(90),bi.getWidth()/2,bi.getHeight() / 2);
        AffineTransformOp opRotated = new AffineTransformOp(at,
                    AffineTransformOp.TYPE_BILINEAR);
        image = opRotated.filter(bi, null);

如果只想将它们旋转90度,只需读取图像的列并将其作为行写入即可。那就没有损失了

伪代码:

for x in oldimage.width
    for y in oldimage.height
        newimage[y][x] = oldimage[x][y]