我正在使用 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);
}
});
代码运行良好。
但是我得到了一个透明的图像,左边是空的。
结果我得到了下图:
为什么白色背景在透明部分不起作用?知道如何解决这个问题吗?
最佳答案
您的输入图像是 GIF
并且具有透明度。您的输出文件是不支持透明度的 JPEG
,因此 GraphicsMagick 将透明像素渲染为黑色 - 默认背景颜色。
你有两个选择:
将您的图像存储为
GIF
,或可以表示透明度的PNG
将背景颜色更改为纯(非透明)白色并存储为
JPEG
。
您选择哪一个取决于您打算在哪里/如何使用图像,以及图像背后的背景是否必须在您要使用它的地方可见。
关于css - 使用 nodejs 的 GraphicsMagick 未返回正确的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28715713/