我正在运行一个快速应用程序,它正在处理一些图像数据。其中一项任务是调制遮罩区域。我正在使用gm模块的Imagemagick子类来解析和处理图像。当我使用本地文件demo.png和demo_mask.png时,调制可以正常工作,但是当我使用从s3存储桶下载的相同图像文件时,调制不起作用。
错误
Stream产生空缓冲区......
下载图片功能
myBucket.getObject({
Key : "correct_src_key",
},(err, downloadData) => {
return downloadData;
});
代码
var gm = require('gm').subClass({
imageMagick: true
});
...
gm(demo_download_data.Body)
.mask(demo_mask_download_data.Body)
.modulate(...)
.toBuffer("PNG",function(err, buffer){ ... })
调试程序demo_download_data属性:
AcceptRange ="字节" Body = Uint8Array [250830] ContentType =" JPG" ConentLength = 250830 ETag = .... LastModified = ...
调试器demo_mask_download_data属性:
AcceptRange ="字节" Body = Uint8Array [5918] ContentType =" JPG" ConentLength = 5918 ETag = .... LastModified = ...
我已经以某种方式将下载的图像数据转换为文件以便能够使用它。提前谢谢。
答案 0 :(得分:0)
似乎.mask()有一个bug缓冲数据,所以我只允许使用像.mask('../ imgs / demo_mask.png')这样的本地文件路径。 现在我通过使用tmp模块创建s3蒙版图像的临时文件来解决这个问题。
现在解决了这个问题