繁体   English   中英

在不降低质量的情况下调整图像大小

[英]resize an image without loosing quality

我正在开发一个Web应用程序:

  1. 上传JPEG图像
  2. 从中提取区域(使用坐标)
  3. 并调整提取的区域大小,而不会降低图像质量。

我使用此代码执行此操作:

//method to extract an image 
def extractedImage=exractImageRect( imageFile ,  x , y , h , w)

ImageIO.write(extractedImage, "PNG", new File("C:\\Users\\Ma\\Documents\\out.png"));
int type = extractedImage.getType() == 0? BufferedImage.TYPE_INT_ARGB : extractedImage.getType();

//resize the image 
resizedImage =resizeImage(extractedImage,  type ,w*2 , h*2)

但是使用此代码,调整大小的图像质量非常低。 我也使用了RenderingHints:同样的问题。

所以我的问题是:在使用300dpi和2479宽度, 3508高度的原始图像的高度和宽度时,保持图像质量的最佳方法什么?

并调整提取的区域大小,而不会降低图像质量。

我认为这部分是不可能的。 让我们假设您的图片只是一个10px X 10px blakc矩形。 现在,您将尺寸加倍,将有一个20px X 20px矩形。 最初你有100个黑色像素,但现在你有400个像素,其中100个是黑色,300个是未知的。 您需要通过某种算法弄清楚您的像素颜色是什么。

在这种情况下,它更容易,因为它是黑色的,但如果不是一个矩形你有一个图片,就不可能弄清楚哪些颜色像素属于未知像素,所以你必须近似但近似并不完美大多数情况下,所以会有质量损失

我已经测试了不同的算法来调整图像的大小(参见此处 ),提供最佳图像质量的算法是AVERAGE,但它非常慢。 PROGRESSIVE_BILINEAR是处理时间和图像质量之间的良好折衷。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM