Articles of graphicsmagick

通过gm通过Express.js上传stream文件以消除双重写入

我正在使用Express.js并有一个上传图像的路线,然后我需要resize。 目前我只是让Express写入文件到磁盘(我认为使用node-formidable下),然后调整使用gm (http://aheckmann.github.com/gm/)写入第二个版本到磁盘。 gm(path) .resize(540,404) .write(dest, function (err) { … }); 我已经读过,你可以在将node-formidable文件stream写入磁盘之前获得一个node-formidable ,因为gm可以接受一个stream而不是一个path,所以我应该可以通过消除双重写到磁盘。 我想我需要覆盖form.onPart但我不知道在哪里(应该做Express中间件?),我不知道如何得到一个form或与该part究竟做什么。 这是我在几个地方见过的代码框架: form.onPart = function(part) { if (!part.filename) { form.handlePart(part); return; } part.on('data', function(buffer) { }); part.on('end', function() { } } 有人可以帮我把这两块放在一起吗? 谢谢!

我如何在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()来实现上面的?