Open amita-trantor opened 8 years ago
I think this is caused by an unexpected image name, maybe the image file name contains some characters such as "-" which cannot be handled.
@SlimFancy
Tried with 0.png
, test.png
also.
It still shows me the same issue.
In case I try to use /tmp/
to store image and use srcPath
instead of srcData
(mentioned below) I get the following error :-
{
"errorMessage": "Woops, image process failed: ImageMagick errError: Command failed: convert: improper image header `/tmp/testingfile1.png' @ error/png.c/ReadPNGImage/3741.\nconvert: no images defined `png:-' @ error/convert.c/ConvertImageCommand/3046.\n"
}
modified ImageResizer.js
is as follows :-
var ImageData = require("./ImageData");
var Promise = require("es6-promise").Promise;
var ImageMagick = require("imagemagick");
var fs = require('fs');
var aws = require("aws-sdk");
var client = new aws.S3({apiVersion: "2006-03-01"});
/**
/**
* Image Resizer
* resize image with ImageMagick
*
* @constructor
* @param Number width
*/
function ImageResizer(options) {
this.options = options;
}
/**
* Execute resize
*
* @public
* @param ImageData image
* @return Promise
*/
ImageResizer.prototype.exec = function ImageResizer_exec(image) {
var imagetype = image.getType();
var params = {Bucket: image.bucketName, Key: image.fileName};
var file = fs.createWriteStream('/tmp/testingfile1.png');
client.getObject(params).createReadStream().pipe(file);
var params = {
// srcData: image.getData().toString("binary"),
srcPath: '/tmp/testingfile1.png',
srcFormat: imagetype,
format: imagetype
};
var acl = this.options.acl;
if(this.options.size){
params['width'] = this.options.size;
}
else {
if(this.options.width){
params['width'] = this.options.width;
}
if(this.options.height){
params['height'] = this.options.height;
}
}
return new Promise(function(resolve, reject) {
ImageMagick.resize(params, function(err, stdout, stderr) {
if ( err || stderr ) {
reject("ImageMagick err" + (err || stderr));
} else {
resolve(new ImageData(
image.fileName,
image.bucketName,
stdout,
image.getHeaders(),
acl
));
}
});
});
};
module.exports = ImageResizer;
var file = fs.createWriteStream('/tmp/testingfile1.png');
is
fs.writeFileSync(
'/tmp/testingfile1.png',
image.getData().toString("binary"),
{encoding: 'binary'}
);
isn't it? and causes same error? I just merged PR https://github.com/ysugimoto/aws-lambda-image/pull/28, This is escape filename, please try it.
@amita-trantor I had problem on dependency library, and updated to 0.8.0. Please update package or re-install this, try it.
I get the following error when I resize image having size greater than 50kb(Around 500KB) I get the following error on Lambda(Although it runs fine on my local) :-
Too much confused I am.