Nodejs:解码base64Image数据并用gm "size error spawn E2BIG"错误处理它
Nodejs: Decoding base64Image Data and process it with gm "size error spawn E2BIG" error
我在尝试解码 base64 编码图像并使用缓冲区通过 gm 处理它时制作了以下字符串:
const gm=require('gm');
const URLSafeBase64 = require('urlsafe-base64');
const iconv = require('iconv-lite');
const fs=require('fs');
//Content too bit to put it inside the script
var base64Data="iVBORw0KGgoAAAANSUhEUg....AAA3NCSVQICAjb4U/gAASuQmCC"
base64Data = base64Data.replace(/^data:\w*\/\w*;base64,/gm,'')
base64data = new Buffer(base64Data,'base64')
gm(base64Data).setFormat('png').size(function(err,value){
if(err){
return console.log("size error",err.message);
}
if(500 < value.width){
let ratio= width/value.width;
let newHeight=value.height*ratio;
this.resize(width,newHeight)
/**
* @var {Buffer} value
*/
.toBuffer(function(err,value){
if(err){
return console.log("Error: ",err)
}
fs.writeSync('./image.png',value.toString('binary'));
});
} else {
fs.writeSync('./image.png',buffer.toString('binary'));
}
});
但是当我尝试调整它时出现以下错误:
size error spawn E2BIG
你知道为什么会这样吗?
您没有将正确的参数传递给 gm()
:您传递的不是缓冲区 base64data
,而是字符串 base64Data
。
这会让 gm
认为您正在传递一个文件名,它最终作为参数传递给 GraphicsMagick 可执行文件,并且因为它很大,您会得到一个 E2BIG
("Error: too big").
我在尝试解码 base64 编码图像并使用缓冲区通过 gm 处理它时制作了以下字符串:
const gm=require('gm');
const URLSafeBase64 = require('urlsafe-base64');
const iconv = require('iconv-lite');
const fs=require('fs');
//Content too bit to put it inside the script
var base64Data="iVBORw0KGgoAAAANSUhEUg....AAA3NCSVQICAjb4U/gAASuQmCC"
base64Data = base64Data.replace(/^data:\w*\/\w*;base64,/gm,'')
base64data = new Buffer(base64Data,'base64')
gm(base64Data).setFormat('png').size(function(err,value){
if(err){
return console.log("size error",err.message);
}
if(500 < value.width){
let ratio= width/value.width;
let newHeight=value.height*ratio;
this.resize(width,newHeight)
/**
* @var {Buffer} value
*/
.toBuffer(function(err,value){
if(err){
return console.log("Error: ",err)
}
fs.writeSync('./image.png',value.toString('binary'));
});
} else {
fs.writeSync('./image.png',buffer.toString('binary'));
}
});
但是当我尝试调整它时出现以下错误:
size error spawn E2BIG
你知道为什么会这样吗?
您没有将正确的参数传递给 gm()
:您传递的不是缓冲区 base64data
,而是字符串 base64Data
。
这会让 gm
认为您正在传递一个文件名,它最终作为参数传递给 GraphicsMagick 可执行文件,并且因为它很大,您会得到一个 E2BIG
("Error: too big").