2017-10-07 3 views
-1

Je travaille sur un noeud + backend express.Base64 image resizer nodejs

Je reçois la chaîne d'images base64 de l'API et je la stocke dans MongoDB. Avant de stocker je veux réduire la taille de l'image (mise à l'échelle). J'ai essayé JIMP mais il ne lit pas l'entrée base64.

Quelqu'un peut-il suggérer n'importe quel bon module de noeud qui accepte l'image base64, la redimensionner et retourner une nouvelle chaîne base64.

Merci

+0

Votre question semble être hors-sujet, [comme il nous demande de recommander ou de trouver une bibliothèque logicielle] (https://stackoverflow.com/help/on-topic). Je suggère de jeter un oeil à [recommandations de logiciels] (https://softwarerecs.stackexchange.com). –

+0

peut essayer cela, https://www.npmjs.com/package/resize-base64 –

+0

Des mises à jour de ce que vous avez fini par utiliser? – jdmdevdotnet

Répondre

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

qu'est-ce que max_length? – jdmdevdotnet

+0

max_length doit être soit image_height soit image_width, le plus long –