使用java中的缩放提高jpeg图像质量

时间:2015-02-11 13:55:13

标签: java image awt phantomjs scaling

我正在使用phantomjs生成jpg图像。我想要600x400px尺寸和144 dpi / ppi的图像。

但我只能生成72dpi的图像。所以,我试图在72 dpi中生成尺寸为1200x800px的图像,然后将其调整为600x400px。 所以我的想法是,

1200x800 px has dpi 72

所以,

600x400px will have dpi 72*2 = 144   (because 1200/2=600px , 800/2=400px )

我正在使用java。但每当我调整图像大小时,质量就会降低。

我试过的方法:

  1. 我试图操纵图像的元数据信息,如下面的帖子所述,但它仍然会使图像质量不佳。

    Increasing Resolution and Reducing Size of an Image in Java

    Write dpi metadata to a jpeg image in Java

  2. 我尝试使用以下帖子中给出的AffineTransform,仍对结果不满意:

    Java image scaling improve quality?

  3. 我使用了错误的方法吗?如果是,那么请提出一些备选方案。 如果方法是正确的,请指导我如何正确实施?

    更新

    我不想减少号码。像素。我想保持不。像素相同但在增加dpi的同时减小图像的高度/宽度。 例如,在具有72 dpi的1200x800px的图像中,我将其降低到600x400像素,同时将dpi增加到144。 因此,如果您看到像素数相同且图像具有更高的dpi值。


      

    最后使用itext渲染器解决了它。请参阅以下帖子   使用itext缩放大图像以提高分辨率。

         
         

    Image Quality using Itext

1 个答案:

答案 0 :(得分:1)

我用Itext解决了它。

File file = new File("demo.png");
Image img = Image.getInstance(file.getName());
img.scaleAbsolute(width, height); //where width,height is the reduced width,height; in my case 600,400.

通过图片类阅读并使用 scaleAbsolute ()。 有关详细信息,请阅读此帖: Image Quality using Itext

PS:这只有在您尝试将图像放入pdf时才有用。 如果有人知道如何将img转换为png文件,请发表评论。