我正在将 tiff 图像文件从一个目录复制到另一个目录,并且需要将它们顺时针旋转 90 度以更正它们的页面方向。这些图像是技术图纸,质量已经不是很好,所以我需要尽可能地使用无损技术。每批每天可能要处理数千张图纸,因此内存和时间效率也是两个考虑因素。
我做的图像处理很少,所以我对可用的库不是很熟悉。在做了一些阅读之后,我正在考虑使用 JAI 的“转置”:
任何使用过这种技术的人都可以在功能或效率方面推荐或反对它吗?
对其他方法有什么建议吗?
我正在将 tiff 图像文件从一个目录复制到另一个目录,并且需要将它们顺时针旋转 90 度以更正它们的页面方向。这些图像是技术图纸,质量已经不是很好,所以我需要尽可能地使用无损技术。每批每天可能要处理数千张图纸,因此内存和时间效率也是两个考虑因素。
我做的图像处理很少,所以我对可用的库不是很熟悉。在做了一些阅读之后,我正在考虑使用 JAI 的“转置”:
任何使用过这种技术的人都可以在功能或效率方面推荐或反对它吗?
对其他方法有什么建议吗?
好吧,如果你只想将它们旋转 90 度,你只需要读取图像的列并将它们写成行。那时完全没有损失。
伪代码:
for x in oldimage.width
for y in oldimage.height
newimage[y][x] = oldimage[x][y]
你可以考虑使用这样的东西:
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);