Tag: graphicsmagick

我如何在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版本?

Meteor.JS CollectionFSvideo图像缩略图(graphicsMagick)

我正在使用CollectionFS上传文件的一个Meteor应用程序。 我能够上传并生成图像的缩略图。 但是我的问题是:我应该如何为video创build缩略图? 我可以看到,它可以通过命令行︰https : //superuser.com/questions/599348/can-imagemagick-make-thumbnails-from-video 但是我怎么能把这个应用到我的Meteor代码中。 这是我在做什么: VideoFileCollection = new FS.Collection("VideoFileCollection", { stores: [ new FS.Store.FileSystem("videos", {path: "/uploads/videos"}), new FS.Store.FileSystem("videosthumbs", {path: "/uploads/videosthumbs", beforeWrite: function(fileObj) { // We return an object, which will change the // filename extension and type for this store only. return { extension: 'png', type: 'image/png' }; }, transformWrite: function(fileObj, readStream, […]

在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吗?

GraphicsMagick进程导致空文件

我正在这样做 gm(jpgName).setFormat('jpg') .resize(160,158) .compress('JPEG') .write(fs.createWriteStream(jpgName),function(err){ if(err){ console.log(err,jpgName); res.send(400); }else{ console.log('file formated to jpg' + jpgName); 我得到了 { [Error: Command failed: gm convert: Empty input file (/home/ubuntu/node/uploads/icon.jpg). ] code: 1, signal: null } 如果我在此处写入的第一行之前停止代码,然后查看该文件,则它具有文件长度。 如果我让这个过程发生(错误),然后看看文件,那么它有一个0字节的大小。 我也试过这个: fs.stat(jpgName, function (err, stats) { console.log('file size:',stats.size); gm(jpgName).setFormat('jpg') .resize(160,158) .compress('JPEG') .write(fs.createWriteStream(jpgName),function(err){ if(err){ console.log('console.log error writing jpg file',err,jpgName); fs.unlink(jpgName); callback(400); return; […]

在节点中的graphicsmagick中将PNG缓冲区转换为JPG

如何在不写入文件的情况下将png缓冲区转换为jpg格式?

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。

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,请参阅答复

使用Node.js和GraphicsMagick将四个图像拼接在一起

我有四个256×256 px图像:a.jpg,b.jpg,c.jpg和d.jpg。 我想将它们合并在一起产生2×2的马赛克图像。 由此产生的图像也应该是256×256像素。 喜欢这个: +—+—+ | a | b | +—+—+ | c | d | +—+—+ 使用普通的GraphicsMagick和命令行,这可以完成 gm convert -background black \ -page +0+0 a.jpg \ -page +256+0 b.jpg \ -page +0+256 c.jpg \ -page +256+256 d.jpg \ -minify \ -mosaic output.jpg 但问题是,如何在Node.js中使用GraphicsMagick ? gm('a.jpg') .append('b.jpg') .append('c.jpg') .append('d.jpg') .write('output.jpg', function (err) {}) // […]

如何与gm node.js组合?

如何用GM Node.js做'gm composite -gravity center change_image_url base_image_url'? 如何调用gm().command() & gm().in()或gm().out()来实现上面的?

resize和裁剪图像并保持纵横比NodeJS&gm

我一直在尝试使用NodeJS的gm包创build一些缩略图,但我很幸运。 我需要调整大于600×600的图像(可以是任何宽度/高度,从给定的一个开始),但是当我将大小传递给gm时,它创build的图像不具有我所要求的相同大小。 例如,给定这个代码,我假设正在运行的node app /path/to/image.png我会收到一个大小为200×100的图像,但是我得到了一个180×100或200×90的图像。 gm(fileLocation) .thumb(200, 100, 'processed.' + process.argv[2].split('.').pop(), function() { console.log("Done!"); }); 我也尝试了resize选项。 甚至有一个选项可以强制这个尺寸,但是输出的高宽比是可怕的。 gm('/path/to/image.jpg') .resize(353, 257) .write(writeStream, function (err) { if (!err) console.log(' hooray! '); });