1

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

我做的图像处理很少,所以我对可用的库不是很熟悉。在做了一些阅读之后,我正在考虑使用 JAI 的“转置”:

http://docs.oracle.com/cd/E17802_01/products/products/java-media/jai/forDevelopers/jai-apidocs/javax/media/jai/operator/TransposeDescriptor.html

任何使用过这种技术的人都可以在功能或效率方面推荐或反对它吗?

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

4

2 回答 2

1

好吧,如果你只想将它们旋转 90 度,你只需要读取图像的列并将它们写成行。那时完全没有损失。

伪代码:

for x in oldimage.width
    for y in oldimage.height
        newimage[y][x] = oldimage[x][y]
于 2012-10-25T13:51:11.473 回答
1

你可以考虑使用这样的东西:

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);
于 2012-10-25T13:45:46.490 回答