我找到了一个顺时针旋转 tiff图像的代码,但是花了这么多时间甚至在jscrollpanel中滚动图像也很慢。
1.So是否有任何简单的方法来旋转tiff图像或
2.以下代码需要进行任何调整以快速旋转。
ReadableByteChannel rBytChnl = Channels.newChannel(url);
ByteBuffer buffer = ByteBuffer.allocate(4096 * 1024);
rBytChnl.read(buffer);
byte[] data = buffer.array();
SeekableStream stream = new ByteArraySeekableStream(data);
ParameterBlock pb = new ParameterBlock();
pb.add(stream);
RenderedOp op = JAI.create("tiff", pb);
TransposeType type = TransposeDescriptor.ROTATE_90;
ParameterBlock pb1 = new ParameterBlock();
pb1.addSource(op);
pb1.add(type);
pb1.add(new InterpolationBilinear());
image = JAI.create("transpose", pb1, null);
答案 0 :(得分:3)
我调整了仿射变换以满足我的需求和工作正常。这仅适用于90度顺时针旋转,其他需要相应地更改代码。
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);