2017-07-24 4 views
2

J'ai fait redimensionner une image en utilisant le module npm d'image facile dans nodejs en utilisant le code ci-dessous.Comment redimensionner une image et la télécharger en utilisant multer dans nodejs vers s3 et en utilisant le module nPM easy-image?

var easyimg = require('easyimage'); 

easyimg.rescrop({ 
    src:'1.jpg', dst:'/var/www/html/bangalore.jpg', 
    width:100, height:100 

    }),function(image,err){ 
    // console.log('Resized and cropped: ' + image.width + ' x ' + image.height); 
    if(image){ 
    console.log(image); 
    } 
    else{ 
    console.log(err);  
    } 

    } 

J'ai une sortie réussie. Ensuite, j'ai téléchargé mon image sur s3 en utilisant le code ci-dessous avec multer.

var storage = multerS3({ 
       s3: s3, 
       bucket: 'my_bucket_name', 
       key: function (req, file, cb) { 
        console.log(file); 
        file_name = file.originalname; 
        var newFileName = Date.now() + "-" + file.originalname; 
        cb(null, newFileName); 
       } 
      }); 
       var upload = multer({storage: storage}).single('profileImage'); 
      upload(req, resq, function (err,res,response) { 
       console.log(response); 
      }); 

Maintenant, ma question est de savoir comment redimensionner une image avant de le télécharger à s3, puis télécharger l'image redimensionnée à s3?

J'ai également essayé d'utiliser le module multer-imageur.

var transfer = imager({ 

       secretAccessKey: 'secretAccessKey', 
       accessKeyId: 'myaccesskey', 
       dirname:'avatar', 
       bucket: 'my_bucket', 

       region:'myregion', 

       key: function (req, file, cb) { 
        console.log(file); 
        file_name = file.originalname; 
        var newFileName = Date.now() + "-" + file.originalname; 

       cb(null, newFileName); 
       console.log(newFileName); 

       },         // 
    gm: {         // [Optional]: define graphicsmagick options 
     width: 200,       // doc: http://aheckmann.github.io/gm/docs.html#resize 
     height: 200, 
     options: '!', 
     format: 'png'      // Default: jpg 
    } 
      }); 
       var upload = multer({storage: transfer}).single('myimage'); 
      upload(req, resq, function (err,res,response) { 
       console.log(req.file); //i am getting this as undefined 
      }) 

Mais cela ne fonctionne pas. dans 'req.file' je suis undefined.?

+0

Pourquoi ne pas utiliser https://www.npmjs.com/package/multer-imager? –

+0

Regardez ma question mise à jour @stdob – Jagadeesh

Répondre

0

Pourquoi ne pas utiliser de multer construit en combinaison avec le module transforme s3 multer?

var upload = multer({ 
    storage: multerS3({ 
    s3: s3, 
    bucket: 'some-bucket', 
    shouldTransform: function (req, file, cb) { 
     cb(null, /^image/i.test(file.mimetype)) 
    }, 
    transforms: [{ 
     id: 'original', 
     key: function (req, file, cb) { 
     cb(null, 'image-original.jpg') 
     }, 
     transform: function (req, file, cb) { 
     //Perform desired transformations 
     cb(null, sharp().resize(600, 600).max()) 
     } 
    }] 
    }) 
}) 

De la documentation: L'option en option shouldTransform multer indique à savoir si elle doit transformer le fichier avant qu'il ne soit téléchargé. Par défaut, il est défini sur false. Si la valeur est true, l'option transforms doit être ajoutée, ce qui indique comment transformer le fichier. transforme l'option doit être un tableau, contenant des objets peut avoir avec id propriétés, clés et transformer. Cet exemple utilise pour la forte Transform (un module de traitement d'image Node.js bien connu).