【问题标题】:How to resize image in Node js如何在Node js中调整图像大小
【发布时间】:2016-07-10 07:44:03
【问题描述】:

在将图片上传到 s3(亚马逊)之前,我需要调整它们的大小。 我试过这个功能,但它不起作用。

这是上传图片的函数。

我的文件名是:beach_life-normal.jpg

我试过这个新代码,但还是不行!!!

这是我的代码:

var AWS = require('aws-sdk'),
fs = require('fs');
var express = require("express");
var app = express();
var im = require('imagemagick');



// For dev purposes only
AWS.config.update({ accessKeyId: '', secretAccessKey: '' });

// Read in the file, convert it to base64, store to S3
var fileStream = fs.createReadStream('beach_life-normal.jpg');
fileStream.on('error', function (err) {
  if (err) { throw err; }
});  
fileStream.on('open', function () {
  var s3 = new AWS.S3();

im.resize({
  srcPath: 'beach_life-normal.jpg',
  dstPath: 'beach_life-normal-small.jpg',
  width:   256

});

  s3.putObject({
    Bucket: 'adinoauploadefile',
    Key: 'beach_life-normal.jpg',
    Body: fileStream
  }, function (err) {
    if (err) { throw err; }
  });

});

【问题讨论】:

  • 根据我的经验,imagemagick 模块毫无意义——它只是对命令行实用程序的限制性包装。请参阅我的答案以获得更有效的直接执行方式。

标签: javascript node.js amazon-s3 image-resizing


【解决方案1】:

在您的示例中,您在调整图像大小 (im.resize) 之前将图像保存到 S3 (s3.putObject)。将resize函数移到put之前。

您也没有将图像传递给 resize 函数;你需要类似的东西

im.resize(fileStream, { // pass in the image
      height:100,
      width:   200
 }, function(err, stdout, stderr){
      if (err) throw err;
      console.log('resized image to fit within 200x200px');
 });

检查您正在使用的库的文档以了解正确的语法。

【讨论】:

    【解决方案2】:

    您似乎缺乏“之前”和数据流之类的基本概念,但我还是会尝试。

    您需要在读取文件和上传到 S3 之间插入一些内容。 convert 进程似乎是个好主意。

    var args = ['beach_life-normal.jpg', '-resize', '200x200>', 'JPEG:-']
    var convert = child_process.spawn('convert', args);
    var s3 = new AWS.S3();
    
    s3.putObject({
        Bucket: 'adinoauploadefile',
        Key: 'beach_life-normal.jpg',
        Body: convert.stdout
    },
    // ...
    

    我将把错误处理等交给你。

    【讨论】:

      【解决方案3】:

      使用此代码。

      im.convert(['kittens.jpg', '-resize', '25x120', 'kittens-small.jpg'], 
      function(err, stdout){
        if (err) throw err;
        console.log('stdout:', stdout);
      });
      

      代替 kittens.jpg ,您可以给出图像的路径,或者在您的情况下,您可以使用 fileStream 和 kittens-small.jpg 将是调整大小的图像名称的名称。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-18
        • 2018-06-03
        • 2015-04-13
        • 1970-01-01
        • 2014-05-24
        • 1970-01-01
        • 2020-10-02
        相关资源
        最近更新 更多