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

时间:2012-10-25 13:41:47

标签: java image image-processing tiff jai

我正在将tiff图像文件从一个目录复制到另一个目录,并且需要顺时针旋转它们90度以更正其页面方向。图像是技术图纸,质量已经很差,所以我需要尽可能使用无损技术。每日批次可能会有数以千计的图纸需要处理,因此记忆和时间效率也是两个因素。

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

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

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

有关其他方法的任何建议吗?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

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

伪代码:

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