GraphicsMagick使用nodejs没有返回正确的图像

时间:2015-02-25 09:45:18

标签: css node.js image imagemagick

我正在使用GraphicsMagick。

这是图片:

https://hbr.org/resources/images/article_assets/hbr/1405/F1405A_A.gif

我用来裁剪:

enter image description here

我的代码在这里:

 gm(request(url), "myimage.jpeg")
    .resize(270, 270, '^')
    .gravity('Center')
    .quality(50)
    .crop(270,270)
    .compress('JPEG')
    .flatten()
    .stream(function (err, stdout, stderr) {
            if (err)
                console.log(err);
            else {
                //upload the file
                file.uploadFileFromGm(fileDetails, stdout, cb);
            }
        });

代码工作正常。

但是我得到的透明图像在左侧是空的。

我得到了下面的图像:

enter image description here

为什么白色背景在透明部分不起作用?知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

您的输入图片是GIF并且具有透明度。您的输出文件是JPEG,它不支持透明度,因此GraphicsMagick将透明像素渲染为黑色 - 默认背景颜色。

您有两种选择:

  1. 将您的图片存储为GIFPNG,可以代表透明度

  2. 将背景颜色更改为实心(非透明)白色并存储为JPEG

  3. 您选择哪一个取决于您计划使用图像的位置和方式,以及图像背后的背景是否必须在您要使用的位置可见。

答案 1 :(得分:0)

你需要这样的东西吗?

http://www.w3docs.com/tools/image-optimiser/