使用 nodejs 的 GraphicsMagick 未返回正确的图像
GraphicsMagick using nodejs not returning correct image
我正在使用 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
。
您选择哪一个取决于where/how您打算使用图像以及图像背后的背景是否必须在您要使用它的地方可见。
你需要这样的东西吗?
我正在使用 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
。
您选择哪一个取决于where/how您打算使用图像以及图像背后的背景是否必须在您要使用它的地方可见。
你需要这样的东西吗?