Tag: imagemagick

我如何在AWS Lambda上安装GraphicsMagick或ImageMagick?

我正在使用Node.js的gm包以及AWS Lambda上提供的默认ImageMagick安装。 const gm = require('gm').subClass({ imageMagick: true }); 出于某种原因,某些图像的大小调整function失败。 我使用Amazon Linux AMI创build了一个EC2实例(ami-hvm-2016.03.3.x86_64-gp2)。 我安装了yum提供的ImageMagick(旧)6.x版本。 当我使用EC2实例上的安装来运行我的脚本时,它再现了我在Lambda上运行代码时看到的故障,确认这是导致故障的IM版本。 如果我安装GrpahicsMagick与sudo yum install GraphicsMagick 。 这允许我的脚本无误地执行调整。 const gm = require('gm').subClass({ imageMagick: false }); 不过,我不知道如何将这个与无服务器部署捆绑在一起。 如果我使用sudo yum –installroot=/var/task install GraphicsMagick到脚本所在的文件夹中,并使用这个require语句来运行我的脚本: const gm = require('gm').subClass({ imageMagick: false, appPath: './usr/bin/' }); 当我在EC2实例上运行我的脚本时,resize工作。 但是,当我使用无服务器进行部署时,脚本在Lambda中运行时,可执行文件似乎已损坏。 gm在调用gm(buffer).size(/*…*/)出现以下错误。 could not get the image size: ERR: {"code":"EPIPE","errno":"EPIPE","syscall":"write"} 我如何构build可以使用无服务器部署的ImageMagick或GraphicsMagick版本?

寻找imagemagick nodejs npm?

我有好几天使用node-imagemagick ,并已经意识到它有错误。 它有大约100个分支,其中一些解决了我遇到的一些问题,但很难弄清楚我应该使用哪个分支。

在node.js中的gm转换问题

我正在将一个图像从JPG转换为PNG,但它是给出的错误。 下面是代码和错误。 gm('E:/image1.jpg').write('E:/image2.png', function(err){ if (err){ console.log(err); } else{console.log('image converted.')} }) 错误是: [Error: Could not execute GraphicsMagick/ImageMagick: gm "convert" "E:/image1.jpg" "E:/image2.png" this most likely means the gm/convert binaries can't be found] 我需要npm graphicsmagick和imagemagick吗?

在亚马逊lambda,并行调整多个缩略图大小asynchronous抛出错误:stream产生空的缓冲区

我已经调整了在lambda中调整照片大小的Amazon示例以创build多个缩略图大小并行运行。 我的代码在几秒钟内在本地运行良好,但在lambda云中,它不会并行运行,并在调整第一个缩略图大小后引发错误。如果将其切换为串行而不是并行,则需要大约60秒连续运行。 为什么会在lambda中并行运行resize的代码会导致stream产生空的缓冲区错误。 如何提高性能,以便在几秒钟内创build尺寸,但是在处理器成本方面仍然可以获得良好的价值和效率。 // dependencies var async = require('async'); var AWS = require('aws-sdk'); var gm = require('gm') .subClass({ imageMagick: true }); // Enable ImageMagick integration. var util = require('util'); // constants var SIZES = [100, 320, 640]; // get reference to S3 client var s3 = new AWS.S3(); exports.handler = function(event, context) { // […]

pipe道stream到graphicsmagick / imagemagicksubprocess

我正在试图将stream中的数据传递给subprocess。 var gm = spawn( 'gm convert – -thumbnail 220×165^ -gravity center -extent 220×165 thumb.jpg' ); var rs = fs.createReadStream( 'cow.jpg' ); rs.pipe( gm.stdin ) 我是否需要在gm上打电话才能使用? 另外在我真正的代码中,我从数据库中获取stream。

NodeJS gmresize和pipe道响应

有没有一种方式来resize的图像我的明确回应? 有些东西是: var express = require('express'), app = express.createServer(); app.get('/', function(req, res){ gm('images/test.jpg') .resize(50,50) .stream(function streamOut (err, stdout, stderr) { if (err) return finish(err); stdout.pipe(res.end, { end: false }); //suspect error is here… stdout.on('end', function(){res.writeHead(200, { 'Content-Type': 'ima ge/jpeg' });}); stdout.on('error', finish); stdout.on('close', finish); }); }); app.listen(3000); 这不幸的是导致一个错误… 很确定我有一些错误的语法。

上传时错误的图像方向 – Amazon S3

我让用户使用Multer-S3将多个图像直接上传到Amazon-S3,然后通过循环在前端显示这些图像。 所有的作品完美。 但是,当通过手机上传图片(在iPhone或Android上拍摄的图片)时,手机的方向是正确的,但在桌面上没有正确的方向。 主要问题。 这是由于我相信图像的EXIF数据。 看起来像ImageMagick或Kraken JS https://kraken.io/docs/storage-s3可能是一种解决方法,但对于我的生活,我无法弄清楚如何以我上传和显示图像的方式来实现如下所示。 如何更改我的代码以自动定位图像? 注意:它必须适用于多个图像 。 谢谢你的帮助! 下面是我让用户直接向Amazon-S3上传多个图片的方式: aws.config.update({ secretAccessKey: 'AccessKey', accessKeyId: 'KeyID', region: 'us-east-2' }); var s3 = new aws.S3(); var storage = multerS3({ limits : { files: 25 }, s3: s3, bucket: 'files', key: function (req, file, cb) { var fileExtension = file.originalname.split(".")[1]; var path = "uploads/" + […]

产卵ENOENT错误

我正在尝试使用imager模块将东西上传到亚马逊S3。 我不断收到错误消息说, events.js:72 throw er; // Unhandled 'error' event ^ Error: spawn ENOENT at errnoException (child_process.js:980:11) at Process.ChildProcess._handle.onexit (child_process.js:771:34) 我已经在我的电脑上安装了imagemagick,但是它一直说它没有链接,这可能是问题吗? 我也尝试使用brew链接imagemagick链接,但由于某种原因无法链接。 我正在使用OSx。 任何修复? 谢谢。

错误:用node.js和imagemagick写EPIPE

我失去了这个错误的来源,我希望你能帮助我。 我是新来的节点,并试图调整与imagemagick图像: var express = require('express'), fs = require('fs'), gm = require('gm'), imagemagick = require('imagemagick'), var gm = require('gm').subClass({ imageMagick: true }); var app = express(); app.get('/', function (req, res) { console.log(__dirname + "/public/photos/4af1e720-a662-11e3-952c-61812ab60f67.jpg"); imagemagick.resize({ srcData: fs.readFileSync(__dirname + "/public/photos/4af1e720-a662-11e3-952c-61812ab60f67.jpg", 'binary'), width: "400" }, function(err,stdout,stderr){ if (err) console.log(err); fs.writeFile(__dirname + "/public/photos/thumbnail/4af1e720-a662-11e3-952c-61812ab60f67.jpg", stdout, 'binary'); }); }); 我得到以下内容: […]

GraphicsMagick:toBuffer()stream产生空的缓冲区

我正在尝试将文件读入缓冲区,调整其大小,然后使用以下示例代码将其写入磁盘: function processImage(data) { gm(data, 'test.jpg') .resize('300×300') .background('white') .flatten() .setFormat('jpg') .toBuffer(function(err, buffer) { if (err) { throw err; } else { fs.writeFile('asd.jpg', buffer); } }); } 但是,这会产生一个错误Error: Stream yields empty buffer 。 我玩过,用imageMagick和graphicsMagick,还是一样的。 如果我replace toBuffer(… 同 write('asd.jpg', function(err) … 它实际上写了一个适当的文件。 编辑在写这个问题时,我发现解决scheme,请参阅答复