我正在尝试在Node.js中使用jimp包来生成base64格式的图像,但出现错误

时间:2018-09-19 07:31:47

标签: node.js image

          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中而不将其转换为图像

1 个答案:

答案 0 :(得分:1)

问题出在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是

     

数据:图像/ JPEG; BASE64,/ 9J / 4AAQSkZJRgABAQAAAQABAAD / 2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA [...]