使用rmagick调整png图像大小而不会降低质量

时间:2012-03-08 02:27:20

标签: imagemagick image-resizing rmagick

我需要在rmagick中将200 * 200图像的大小调整为60 * 60而不会丢失图像质量。目前我正在关注png图像

img = Magick::Image.from_blob(params[:file].read)[0]
  img.write(RootPath  + params[:dir_str] + "/#{filename}") do
    self.quality=100;
    #      self.compression = Magick::ZipCompression
  end

我在结果图像中失去了清晰度。我希望能够通过丢失最少量的图像质量来调整大小。 我试图设置它的质量和不同的压缩,但所有这些看起来都没有用。 所有生成的图像仍然看起来被删除了一层颜色而单词字符正在失去清晰度

任何人都可以给我一些调整png图像大小的说明吗?

2 个答案:

答案 0 :(得分:0)

你正在将图片从200x200 = 40,000缩小到60x60 = 3,600 - 也就是说,不到分辨率的十分之一 - 你会对丢失图像质量感到惊讶吗?可以这样想想 - 你能拍摄一张16x16的图像并将其调整为5x5而不会降低质量吗?这与你在这里尝试的情况大致相同。

如果你想要做的事实际上是可能的,那么每张照片都可以减少到一个像素而不会降低质量。

艺术设计师的60x60图像质量比你的高,这取决于艺术设计师正在处理的图像的原始尺寸。例如,如果艺术设计师使用800x800图像并提供200x200图像,那么还将原始800x800图像缩小为60x60,然后60x60图像将比您拥有的图像更好。这是因为你的60x60图像已经失去了两个质量损失:一个是200x200,第二个是从200x200到60x60。这必然会比从原始图像调整大小的图像更糟糕。

答案 1 :(得分:0)

您可以将png转换为矢量图像,将矢量调整为60x60,然后将矢量转换为png。几乎无损。