2017-10-07 78 views
-1

我正在一个节点+后端快递。Base64图像调整器nodejs

我正在从API接收base64图像字符串,并将其存储到MongoDB中。存储之前,我想减少图像大小(缩放)。我试过JIMP,但它没有读取base64输入。

任何人都可以请建议任何好的节点模块,它接受base64图像,缩放它,并返回一个新的base64字符串。

感谢

+0

你的问题似乎是题外话,[因为它要求我们建议还是找一个软件库(https://stackoverflow.com/help/on-topic)。我建议看看[软件推荐](https://softwarerecs.stackexchange.com)。 –

+0

可以试试,https://www.npmjs.com/package/resize-base64 –

+0

你最终使用什么更新? – jdmdevdotnet

回答

0
....some logic.... 

    let max_width = 371; 
    let max_height = 280; 

    var image = new Image(); 
    image.src = YOUR_BASE64_STRING; 

    let image_width = image.width; 
    let image_height = image.height; 

    let ratio = 1; 

    if(image_width > max_length || image_height > max_length){ //need to scale 

     ratio = max_length/image_width; 

     if(image_height > image_width){ 
      ratio = max_length/image_height; 
     }    
    } 


    var canvas = document.createElement("canvas"); 
    var ctx = canvas.getContext("2d"); 
    canvas.width = image_width * ratio; // target width 
    canvas.height = image_height * ratio; // target height 


    ctx.drawImage(image, 
     0, 0, image.width, image.height, 
     0, 0, canvas.width, canvas.height 
    ); 

    var RESIZED_BASE64_STRING = canvas.toDataURL(); 
....some logic.... 
+0

什么是max_length? – jdmdevdotnet

+0

max_length应该是image_height或image_width,较长的一个 –