NodeJS和GraphicsMagick:resize()破坏图像质量

时间:2017-01-28 10:53:03

标签: javascript node.js image-resizing graphicsmagick

我使用GraphicsMagick来调整大小并存储上传到我的Web应用程序的图像。 问题是即使将质量设置为100,图像质量也会被破坏,看起来非常难看。

我使用的代码是这样的:

// ... "data" is the Buffer object I obtain from the upload
gm(data)
    .quality(100)
    .resize(600)
    .write("/path/to/write", function (err) {
        ...
    };

我认为我做错了什么,但我无法找到错误的地方。 我搜索了文档,我已经用Google搜索了所有问题,但是我没有发现任何人遇到与我相同的问题。

非常感谢所有帮助!非常感谢!

2 个答案:

答案 0 :(得分:0)

大图像等于大问题。

不仅因为您丢失了质量,还因为这个过程需要时间。

我建议您使用thumbnail方法执行此操作,或深入调整使用imagemagick使用Using an external database with Google App Engine指定参数,方法如下:

gm.resize({
  srcData : img,
  strip : false,
  width : 173,
  height : "173^",
  customArgs: [ 
    "-gravity", "center"
    ,"-extent", "173x173"
  ]
}).write("/path/to/write", function (err) {

...并避免嵌套和联接功能。

要使用imagemagick,您可以这样做

var imageMagick = gm.subClass({ imageMagick: true });

然后使用imageMagick,就像你通常使用gm一样。

希望这有帮助

答案 1 :(得分:0)

我还有gm的图像质量问题,然后我使用了这个模块。 https://github.com/oliver-moran/jimp它对我有用。调整后的图像质量要好得多