GraphicsMagick使用nodejs不能返回正确的图像

我正在使用GraphicsMagick。

这是图像:

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

我用来裁剪:

在这里输入图像说明

我的代码在这里:

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); } }); 

代码工作正常。

但是我得到了一个透明的图像,左侧是空的。

我得到了以下图像:

在这里输入图像说明

为什么白色背景不能在透明部分工作? 任何想法如何解决这个问题?

您的input图像是一个GIF并具有透明度。 您的输出文件是不支持透明度的JPEG ,因此GraphicsMagick已将透明像素渲染为黑色 – 默认背景颜色。

你有两个select:

  1. 将图片存储为GIF或可以表示透明度的PNG

  2. 将背景颜色更改为纯色(不透明)白色,并以JPEG存储。

您select哪一个取决于您计划使用图像的位置/方式以及图像背后的背景必须在您要使用的位置可见。

你需要这样的东西吗?

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