Java 旋转图像质量下降
我有旋转图像的功能。虽然我失去了质量。有什么改变可以改善它吗?
public BufferedImage RotateImage(String imagePath,int degrees) throws IOException{
File file = new File(imagePath);
Image image = ImageIO.read(file);
BufferedImage img=bufferImage(image, BufferedImage.TYPE_INT_RGB);
AffineTransform tx = new AffineTransform();
double radians = (Math.PI / 180) * degrees;
double width = img.getWidth()/2;
double height = img.getHeight()/2;
if(degrees != 180){
tx.translate(height,width);
tx.rotate(radians);
tx.translate(-width,-height);
}else{
tx.rotate(radians,width, height);
}
AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
img = op.filter(img, null);
return img;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
尝试使用双三次或双线性。链接显示了每个的示例。
Try using bicubic or bilinear. Link shows an example of each.
其他几个提到的 AffineTransform 过滤参数很重要,但它也取决于图像所采用的编码。如果是 JPEG,无损旋转并非普遍可行。
The AffineTransform filtering parameter several others mentioned is important, but it also depends on the encoding your images come in. If it's JPEG, lossless rotation isn't universally possible.
AffineTransformOp.TYPE_NEAREST_NEIGHBOR
总是会让一切看起来都像blergh。尝试使用AffineTransformOp.TYPE_BILINEAR
或AffineTransformOp.TYPE_BICUBIC
。AffineTransformOp.TYPE_NEAREST_NEIGHBOR
will always make everything look like blergh. Try usingAffineTransformOp.TYPE_BILINEAR
orAffineTransformOp.TYPE_BICUBIC
.尝试使用任一
TYPE_BICUBIC
或
TYPE_BILINEAR
Try using either
TYPE_BICUBIC
or
TYPE_BILINEAR