小编典典
将新的BufferedImage传递到filter()方法中,而不是让它创建自己的作品(不是完全黑色)。
同样,变换似乎无法正常工作,图像最终在目标中偏移了。我能够通过手动应用必要的转换来解决它,以相反的顺序记录这些工作,并且在目标图像中,width
=旧高度,而height =旧宽度。
AffineTransform tx = new AffineTransform();
// last, width = height and height = width :)
tx.translate(originalImage.getHeight() / 2,originalImage.getWidth() / 2);
tx.rotate(Math.PI / 2);
// first - center image at the origin so rotate works OK
tx.translate(-originalImage.getWidth() / 2,-originalImage.getHeight() / 2);
AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);
// new destination image where height = width and width = height.
BufferedImage newImage =new BufferedImage(originalImage.getHeight(), originalImage.getWidth(), originalImage.getType());
op.filter(originalImage, newImage);
filter()的javadoc声明它将为您创建BufferedImage,我仍然不确定为什么它不起作用,这里肯定有问题。
If the destination image is null, a BufferedImage is created with the source ColorModel.
2020-10-12