Tag: imagemagick

节点js + imagemagick +错误:产卵ENOENT

您好想要实现Imagemagick包使用node.js 我添加了我的下面的代码。 var im = require('imagemagick'); router.post('/conversation/start', function(req, res) { var args = ["/public/images/team/rajini.jpg", "-crop", "120×80+30+15", "output.png"]; im.convert(args, function(err) { if (err) { throw err; } res.end("Image crop complete"); }); }); 但我在terminal得到以下错误。 events.js:72 throw er; // Unhandled 'error' event ^ Error: spawn ENOENT at errnoException (child_process.js:988:11) at Process.ChildProcess._handle.onexit (child_process.js:779:34) npm ERR! weird error 8 npm […]

Graphicsmagick autoOrient()。size()在node.js库中给出了翻转的图像大小

图像自动定位后,如何获取图像大小? 大小依然给予自动定向的大小,而不是旋转后的大小。 (所以x和y的尺寸翻转)。 var original = gm(response.Body).autoOrient(); original.size(function (err, size) { if (err) { console.error(err); return res.status(500).send(err); } resize_photo(size, max_size, original, function (err, photo) { res.setHeader('Content-Type', 'image/jpeg'); res.send(photo); }); });

使用请求和gm模块在NodeJS中下载后立即调整图像大小

我正在尝试调整图像的大小后,我已经下载它们使用nodejs,请求和gm模块,但我很难正确地pipe理的东西了。 var fs = require('fs'); var path = require('path'); var gm = require('gm').subClass({imageMagick: true}); var request = require('request'); var async = require('async'); var folderImages = './images/'; var q = async.queue(function (task, callback) { // Renaming the images var thumb350 = task.target.replace('.jpg', '-350.jpg'); // The target path/images var target350 = path.join(folderImages, thumb350); // Download the images […]

缓冲区通常比stream更快处理?

我已经尝试了几个Imagemagick包装库和一些S3库。 由于巨大的性能差异,我无法select最佳的概念。 我已经与节点库“gm”解决了,这是一个很好的工作和logging。 至于S3我已经尝试了亚马逊自己的AWS库以及“S3-Streams” 编辑:我刚刚发现,AWS库可以处理stream。 我想这是一个新的functions3.upload(或者我刚刚错过了?)。 无论如何,我放弃了使用s3uploadPart更复杂的S3stream 。 在我的testing案例中切换库stream后等于上传缓冲区。 我的testing用例是将一个2MB的jpg文件分割成大约30个512px的tile,并把每个tile发送到S3。 Imagemagick通过裁剪命令有一个非常快速的自动生成方块。 不幸的是,我还没有find任何节点库,可以捕获自动生成的瓷砖的多文件输出。 相反,我必须通过分别为每个图块调用crop命令来在循环中生成图块。 我会提供详细信息之前的总计时间: A :85秒(s3-streams) A :34秒(aws.s3.upload)(编辑) B :35秒(缓冲器) C :25秒(缓冲区并行) 在这种情况下,明显缓冲区比stream处理更快。 我不知道gm或s3stream是否有不好的stream的实现,或者我应该调整一些东西。 现在我要解决schemeB. C更快,但吃更多的内存。 我在低端数字海洋Ubuntu机器上运行这个。 这是我曾经试过的: A.生成瓦片并逐一stream式传输 我有一个数组准备与裁剪信息和s3Key为每个瓷砖生成 该数组与“async.eachLimit(1)”循环。 我没有成功地一次生成多个瓦片,因此限制(1)。 随着瓦片生成,它们直接stream入S3 伪代码: async.eachLimit(tiles, 1, function(tile, callback) { gm(originalFileBuffer) .crop(tile.width, tile.height, tile.x, tile.y) .stream() .pipe(s3Stream({Key: tile.key, Bucket: tile.bucket})) //using "s3-streams" package .on('finish', callback) }); […]

node.js将imagemagick的输出上传到AWS S3

我有一个问题操纵imagemagick图像,然后上传到S3。 由此产生的对象有不同(更大)的大小,似乎是腐败的。 如果我做了一个中间步骤,并将输出保存到本地tmp文件,并将其读回,然后上传结果一切似乎很好。 这是不起作用的代码。 im.resize({ srcData: imageObject.Body, width: variant.width, height: variant.height, customArgs: ['-auto-orient'] }, function(err, stdout, stderr) { if (err) { // This resize completed successfully log.err('Failed calling imageMagick, bail out', err); callback(err); return; } var fileName = cfg.aws.s3.uploadDir + photo.imageId + '/' + variant.width + 'x' + variant.height + '.jpg'; log.info('Storing image at S3 […]

如何检测调色板的PNG文件?

我想有一个函数返回true时候提供一个PNG文件,如下所示: 在呈现“自然”PNG(例如照片)或任何非PNG(仅仅是颜色渐变的PNG)的情况下呈现,如本问题中呈现的那样。 但你有什么尝试? 我什么都没试过。 我有一个或两个想法,比如随机抽样水平和垂直像素条纹,并寻找完美的线性色度变化,但我在这里问,因为我想涉及到HiveMind更好的洞察力,因为我知道大多数问题有一个非常简单的解。 我更喜欢解决scheme是在JavaScript(想像NodeJS与ImageMagick)或PHP(与Imagick)。 也就是说,只要algorithm是稳定的,任何语言都可以。 提前感谢你们

圆形图像angular落GM ImageMagic,通过选项

嗨,我想转换一些圆angular的图像。 我发现在他们的网站上ImageMagic可以做到这一点 convert thumbnail.gif \ \( +clone -crop 16×16+0+0 -fill white -colorize 100% \ -draw 'fill black circle 15,15 15,0' \ -background Red -alpha shape \ \( +clone -flip \) \( +clone -flop \) \( +clone -flip \) \ \) -flatten rounded_corners_red.png http://www.imagemagick.org/Usage/thumbnails/问题是,我不知道如何将所有这些选项转化为GM。 我试过了 gm.in("\( +clone -crop 16×16+0+0 -fill white -colorize 100% -draw 'fill black […]

在Azure函数上使用ImageMagick或GraphicsMagick

我正在尝试查看我的公司是否可以使用Azure函数将TIFF文件的转换自动转换为多种JPG和PNG格式和大小。 我使用Node.js函数,但也可以使用其他语言。 我的问题是,我无法得到GraphicsMagick或ImageMagickfunction。 我使用正常的程序安装使用npm安装 。 它似乎安装好,模块也似乎加载,但是当我尝试处理文件时没有任何反应。 没有什么,也没有错误。 var fs = require('fs'); var gm = require('gm'); module.exports = function(context,req){context.log('Start …'); try { context.log('Looking for GM…'); context.log(require.resolve("gm")); } catch(e) { console.log("GM is not found"); process.exit(e.code); } gm('D:/home/site/wwwroot/HttpTriggerJS1/input/870003-02070-main-nfh.jpg') .resize(240, 240) .noProfile() .write('D:/home/site/wwwroot/HttpTriggerJS1/output/resize.jpg', function (err) { context.log('TEST'); if (!err) { context.log('done'); } } ); context.done(null, res); }; 我不确定这是甚至可能的,但我还没有发现任何信息说明它不能 。 […]

在node.js中使用imagemagick调整图像大小

在我的应用程序,我试图调整图像使用imagemagick,但我有以下错误时resize错误:imagesexecvp():没有这样的文件或directory.this是我的代码 im.resize({ srcPath: '/tmp/Images/' + req.files.image.name, dstPath: 'resized_'+req.files.image.name , width:42, height:42 }, function(err, stdout, stderr){ if (err) { console.log('error while resizing images' + stderr); }; });

ImageMagick识别报告不正确的GIF帧数

我正在使用ImageMagick来做一些GIF图像的东西。 我的一个步骤是identify图像中的帧数。 我通过node-imagemagick (和后面的gm )调用identify ,如下所示: identify -format '%T,%w,%h ' test.gif 大多数情况下,我正确地得到53帧空间分隔的53个值。 但是有时候我会得到47或50帧的相同的GIF图像 (有53帧)。 这怎么可能发生? 我在同一时间运行convert -coalesce -append test.gif other.gif ,但它不应该触摸原始图像,对不对? 此外,我检查和原始图像就好,即使错误的帧数报告。 我甚至不能一致地重现这一点。 我在哪里寻找问题? 这似乎发生在我同时运行多个ImageMagick进程时(在不同的文件上)。 我在2013-12-11使用ImageMagick 6.8.7-9 Q16 x86_64。 有问题的图片: (但是我发生过这种情况,其他图像。)