在节点js中调整图像大小

Posted

技术标签:

【中文标题】在节点js中调整图像大小【英文标题】:Resize image in node js 【发布时间】:2016-09-05 21:05:48 【问题描述】:

我想在将图片上传到 s3(亚马逊)之前调整它们的大小。 我尝试使用“resizeImg”功能,但它的作用是以标准尺寸而不是新尺寸上传图像。 我的代码用 node js 编写,然后上传到 s3-amazon。 图片名称为:beach_life-normal.jpg

我的代码:

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

const resizeImg = require('resize-img');

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

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();

resizeImg(fs.readFileSync('beach_life-normal.jpg'), width: 128, height:  128).then(buf => 
    fs.writeFileSync('beach_life-normal-new.jpg', buf);
);


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

);

【问题讨论】:

你为什么要传递原始文件并期望它上传新文件? 另外,为什么要在调整大小完成之前上传文件? 好的,我需要做什么? 【参考方案1】:

你应该上传新文件

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

const resizeImg = require('resize-img');

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

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();

resizeImg(fs.readFileSync('beach_life-normal.jpg'), width: 128, height:  128).then(buf => 
    fs.writeFileSync('beach_life-normal-new.jpg', buf);
    s3.putObject(
      Bucket: 'adinoauploadefile',
      Key: 'beach_life-normal-new.jpg',
      Body: 'beach_life-normal-new.jpg'
    , function (err) 
     if (err)  throw err; 
    );
  );  
);

【讨论】:

我试过这个代码上传新图片(=新尺寸)但是当我打开新图片时它说:“无法打开这个图片”,即正确上传图片 可以在本地打开图片吗?你确定问题不在于调整大小吗?你能检查一下本地文件的MD5和是否和上传的文件一样吗? 是的,我尝试在本地打开图片,我看到了图片

以上是关于在节点js中调整图像大小的主要内容,如果未能解决你的问题,请参考以下文章

使用 JS、JQuery 或 HTML5 调整图像大小

节点 gm 水印和调整大小

node js使用graphicsmagick调整文件夹中所有图像的大小

调整大小时如何调整子节点的大小以适合 SKSpriteNode 的大小?

如何禁用three.js以以2的幂调整图像大小?

(node.js 模块) 锐利图像处理器保持源文件打开,调整大小后无法取消链接原始文件