Articles of gm

NodeJS / gm:承诺asynchronous调用

我使用gm来操作nodeJS应用程序中的一些图像。 这是我的function如何。 正如你所看到的,有一些操作开关(在这个例子中:旋转)。 gmStream被创build,在切换之后.stream()和pipe()将被使用。 到目前为止,一切都很好。 但是,对于切换resize的情况下,我需要知道图像的尺寸,我通过size() 。 但是这是一个asynchronous调用。 这个gmStream不用于交换机下面显示的stream() 。 但是在这个stream()会做更多的数据库的东西,所以我需要使用相同的东西… function manipulate (method, param) { return new Promise(function (resolve, reject) { // Configure GridFS (gridfs-stream) const gfs = Grid( MongoInternals.defaultRemoteCollectionDriver().mongo.db, MongoInternals.NpmModule ) switch (method) { case 'rotate': gmStream = gm(readStream) .rotate('#ffffff', param.rotate) break // … some more cases … case 'resize': gmStream = gm(readStream) […]

GraphicsMagick / ImageMagickreplace所有不透明的像素(如Photoshop的颜色叠加)

我正在尝试使用GraphicsMagick for Node将所有不透明的像素replace为给定的颜色。 使用合成图像不是一个选项,我只需要将每个不透明像素更改为给定的颜色。 原始图像: 目标: 透明像素应该保持透明。 我正在尝试实现Photoshop的颜色叠加效果:

JS:Promise不会返回值

我需要得到一个asynchronous函数的值。 我试图使用Promise,但是这不起作用: const res = new Promise(function (resolve, reject) { gm(readStream).size({ bufferStream: true }, function (err, size) { if (!err) resolve(size) }) }) console.log(res) 我得到的结果是Promise { <pending> }

使用GraphicsMagick处理GridFS文件并将其作为新文件存储

我试图通过gridfs-stream ( https://github.com/aheckmann/gridfs-stream )读取一个GridFS文件,用gm旋转它90°并将其作为一个新的GridFS文件存储。 我的结果看起来非常不稳定…所以我在寻求帮助来优化这个小小的代码片段。 而这个代码的第二件事:我需要一种“开关”。 这段代码对图像进行旋转操作。 但我需要传递参数来做旋转,resize或其他。 我如何整合这个? import Grid from 'gridfs-stream' import { MongoInternals } from 'meteor/mongo' const id = '12345' const gfs = Grid( MongoInternals.defaultRemoteCollectionDriver().mongo.db, MongoInternals.NpmModule ) const readStream = gfs.createReadStream({ _id: id }) readStream.on('error', function (err) { console.error('Could not read stream', err) throw Meteor.Error(err) }) gm(readStream) .rotate('#ffffff', 90) .stream(function (err, stdout, […]

删除节点中的图像背景

我正在从事捕捉用户的面部并将其放在现有模型上的项目。 为了结合人脸和模型的图像,我使用节点的gm库; 和面部检测我使用的是opencv。 我能够做到既检测脸部,又把它放在模型上。 但问题是我的模型是透明的背景,但用户的脸不(因为脸从相机捕获)。 我想删除脸部的背景,使其透明。 有什么办法可以做到这一点吗? 这是我的集成代码: gm() .in('-page', '+0+0') .in("public/" + modelImagePath) .in('-page', '+130+45') .in(newDir + '/crp.png') .mosaic() .write(resultantImage, function (err) { if (err) console.log(err); }); 这里crp.png是人脸图像,modelimagepath是模型图像完整的opencv + gm代码: cv.readImage(newDir + "/zxcv.png", function(err, im){ im.detectObject(cv.FACE_CASCADE, {}, function(err, faces){ console.log("into detec:" + faces.length + "," + faces[0]); if ( faces.length > 0) { var […]

GraphicsMagick无法处理Unicode文件名

我发现GraphicsMagick无法处理我的中文文件。 我在ImageMagick上做了同样的testing,但IM按预期工作。 我认为这可能是一个错误,所以我在这里提交了一个错误报告: https : //sourceforge.net/p/graphicsmagick/bugs/384/ 无论如何,这是如何重现我的情况: 平台:Win10 版本:GraphicsMagick 1.3.20 代码: gm -identify 獅藝學會.jpg 这是从命令提示符返回的文本: >gm -identify 獅藝學會.jpg gm identify: Unable to open file (????.jpg) [Invalid argument]. gm identify: Request did not return an image. 使用IM工作: identify 獅藝學會.jpg ç?.è-?å-,æoƒ.jpg JPEG 3264×2448 3264×2448+0+0 8-bit sRGB 2.691MB 0.016u 0:00.004 虽然返回的文本是混乱的,但是将文件转换为.png仍然保持相同的文件名,除了不同的扩展名。 发生了什么 我发现这个问题通过使用gm node.js库批处理我的图像,调用的来源是从UTF-8网页,所以我假设文件名是作为Unicode编码传递 。 我发现没有任何与此问题有关的文档,虽然文档指出有一个-encoding选项,它不能在Windows上作为参数发送,因为它不能识别它,我无法在Google上find相关的解决scheme。 请帮忙,有没有简单的方法解决这个问题,同时保持确切的文件名?

Nodejs蓝鸟诺言在处理图像时失败

//Created a promise for each image size. var promises = sizes.map(function (size) { return new Promise(function (resolve, reject) { var destinationDir = fileUtil.getAbsolutePathOfImage(destinationPath); fileUtil.createDirectoryIfNotExists(destinationDir); destinationDir += size.src; fileUtil.createDirectoryIfNotExists(destinationDir); //Resize the image. //console.log('imagefile : ' + JSON.stringify(imageFile)); //console.log('destinationDir: ' + JSON.stringify(destinationDir)); //Called an imageUtil resize method to perform resize. imageUtil.resize(imageFile, destinationDir, size).then(data => { var fileName […]

如何添加居中文本与gm节点(graphicsmagick / imagemagick)?

这涉及节点的“gm”扩展, http://aheckmann.github.io/gm/docs.html 我需要添加一些围绕边界框的文本(水平就足够了)。 函数drawText()需要x,y坐标,但是没有办法绘制居中文本。 否则我需要一个函数,它可以返回给定的字体/大小的文本string的宽度,所以我可以在调用drawText()之前计算我在JavaScript中的起始位置。

如何wordwrap在gm节点?

今天发现GM需要在我的图片中包含文字。 有没有办法确保我的文字包装宽度是否比我的图像宽度更长?