gpt4 book ai didi

node.js - 空 JPEG 图像(不支持 DNL) Node Canvas

转载 作者:行者123 更新时间:2023-12-03 12:12:32 24 4
gpt4 key购买 nike

我正在尝试使用 Node Canvas 裁剪背景图像,但我遇到了以下代码的一些奇怪错误。

错误是“[错误:写入输出流时出错]”。如果我使用 node-canvas 存储库中的裁剪示例代码,则会收到此错误“空 JPEG 图像(不支持 DNL)”

/* */
var cnv = new Canvas(w,h),
ctx = cnv.getContext('2d'),
original = '/img/pages/'+page+'/background.jpg';


ctx.imageSmoothingEnabled = true;



fs.readFile('public/'+original, function( err,image){
if (err) {
res.status(404)
.send('Not found');
}
else {
var
img = new Image;
img.src = image;


ctx.drawImage(img,
Math.abs( (w-img.width)/2),0,
w,h,
0,0,
w,h
);


cnv.toBuffer(function(err, buf){

console.log(err);

if( err){
res.status(500)
.send('Error generating image buffer');
}
else {
fs.writeFile('public'+resampled, buf, function(err){

console.log(err);
console.log('Resized and saved in %dms', new Date - start);

returnResampledFile( res,page,w,h);

});
}
});
}
});

我已经多次使用 node-canvas 没有问题,但由于某种原因,这是一个问题。任何建议都会很棒。

最佳答案

libjpeg (可能在幕后使用)不支持 JPEG 文件中的 DNL 标记( see this document, towards the end, for an explanation )。包含此类标记的文件将声明为零高度(因此是 Empty JPEG image 消息)。我的猜测是您的输入文件使用此类标记,从而触发错误。

至于解决方案:尝试找到一个 JPEG 阅读器,它可以读取这些类型的文件,并将它们转换回 libjpeg 可以处理的内容。恐怕我不能推荐任何东西,因为我自己从未遇到过这个问题。

关于node.js - 空 JPEG 图像(不支持 DNL) Node Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16470268/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com