在节点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中调整图像大小的主要内容,如果未能解决你的问题,请参考以下文章
node js使用graphicsmagick调整文件夹中所有图像的大小