在 Nodejs 中使用 jimp 包裁剪 base64 格式图像时出错
Error cropping a base64 format image using jimp package in Nodejs
var base64str="data:image/jpeg;base64,***"//base64 format of the image
var buf = Buffer.from(base64str, 'base64');
jimp.read(buf, (err, image) => {
if (err) throw err;
else {
image.crop(140, 50, 200, 280)
.quality(100)
.getBase64(jimp.MIME_JPEG, function(err, src) {
console.log("rb is \n")
console.log(src);
})
}
})
我正在尝试使用 npm 的 jimp 包来裁剪图像的 base64 格式,但出现如下错误:
Error: Could not find MIME for Buffer <null>
at Jimp.parseBitmap (D:\Node\image-crop\node_modules\@jimp\core\dist\utils\image-bitmap.js:108:15)
at new Jimp (D:\Node\image-crop\node_modules\@jimp\core\dist\index.js:425:32)
at _construct (D:\Node\image-crop\node_modules\@jimp\core\dist\index.js:100:393)
at D:\Node\image-crop\node_modules\@jimp\core\dist\index.js:932:5
at new Promise (<anonymous>)
at Function.Jimp.read (D:\Node\image-crop\node_modules\@jimp\core\dist\index.js:931:10)
at Object.<anonymous> (D:\Node\image-crop\index.js:46:6)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
有什么方法可以裁剪 base64 格式的图像,而无需在 Nodejs 中将其转换为图像?
问题出在 base64 字符串上。要使其工作,只需删除前缀 data:image/jpeg;base64,
,并只保留数据。
示例:
const base64str = "R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs="//base64 of a 1x1 black pixel
const buf = Buffer.from(base64str, 'base64');
jimp.read(buf, (err, image) => {
if (err) throw err;
else {
image.crop(140, 50, 200, 280)
.quality(100)
.getBase64(jimp.MIME_JPEG, function (err, src) {
console.log("rb is \n")
console.log(src);
})
}
})
输出为:
rb is
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA[...]
var base64str="data:image/jpeg;base64,***"//base64 format of the image
var buf = Buffer.from(base64str, 'base64');
jimp.read(buf, (err, image) => {
if (err) throw err;
else {
image.crop(140, 50, 200, 280)
.quality(100)
.getBase64(jimp.MIME_JPEG, function(err, src) {
console.log("rb is \n")
console.log(src);
})
}
})
我正在尝试使用 npm 的 jimp 包来裁剪图像的 base64 格式,但出现如下错误:
Error: Could not find MIME for Buffer <null>
at Jimp.parseBitmap (D:\Node\image-crop\node_modules\@jimp\core\dist\utils\image-bitmap.js:108:15)
at new Jimp (D:\Node\image-crop\node_modules\@jimp\core\dist\index.js:425:32)
at _construct (D:\Node\image-crop\node_modules\@jimp\core\dist\index.js:100:393)
at D:\Node\image-crop\node_modules\@jimp\core\dist\index.js:932:5
at new Promise (<anonymous>)
at Function.Jimp.read (D:\Node\image-crop\node_modules\@jimp\core\dist\index.js:931:10)
at Object.<anonymous> (D:\Node\image-crop\index.js:46:6)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
有什么方法可以裁剪 base64 格式的图像,而无需在 Nodejs 中将其转换为图像?
问题出在 base64 字符串上。要使其工作,只需删除前缀 data:image/jpeg;base64,
,并只保留数据。
示例:
const base64str = "R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs="//base64 of a 1x1 black pixel
const buf = Buffer.from(base64str, 'base64');
jimp.read(buf, (err, image) => {
if (err) throw err;
else {
image.crop(140, 50, 200, 280)
.quality(100)
.getBase64(jimp.MIME_JPEG, function (err, src) {
console.log("rb is \n")
console.log(src);
})
}
})
输出为:
rb is
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA[...]