Tag: graphicsmagick

在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中执行一系列的image processing步骤

我正在使用gm Node模块进行裁剪并制作图像的缩略图。 这是我正在做的事情… var img = gm("./myImage.jpg"); var thmb; if(options.crop) img = img.crop(100, 50, 10, 10); if(options.resize) thmb = img.resize(240); img.stream(callback); if(thmb) thmb.stream(callback2); 预期结果: 上面的代码应该输出两个图像('img'和'thmb')。 'img'应该是原始图像的裁剪版本,'thmb'应该是原始的裁剪和resize的版本。 实际结果 “img”输出按预期裁剪,但“thmb”只是原始图像的缩放版本。 它没有按预期裁剪。 我究竟做错了什么?

在node.js和graphicsmagick中创build带有背景的透明图像

如何使用Node.js中的GraphicsMagick(使用gm库)创build以下效果? 从缓冲区读取图像 设置背景颜色 模糊 不透明度 返回新的图像作为缓冲区 我正在尝试不起作用: gm(buffer) .background("#ff00aa") .blur(10,5) .operator('Opacity', 'Assign','30%') .resize(width) .toBuffer("JPG", function (err, buffer) { … }); 我想要的是这个结果:

使用GraphicsMagick和Node.js将多个图像转换为多页PDF文件

我正在使用此function将2页从多页TIFF文件转换为多页PDF文件。 var writeStream = fs.createWriteStream('./docs/multipage1.pdf'); gm().command('convert') .in('./docs/' + data.nomefile + '[1]') .in('./docs/' + data.nomefile + '[13]') .density(150, 150).compress('jpeg') .stream('pdf', function(err, stdout, stderr) { if (!err) { stdout.pipe(writeStream) } else { console.log(err) } }) 我想改变它,使其与dynamic页面select工作: var pages = req.query.pages; pages = JSON.parse(pages) // array of page number [0,1,5,18] for (page in pages) { data.nomefile+'['+pages[page]+']' } ……………

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。 请帮忙,有没有简单的方法解决这个问题,同时保持确切的文件名?

Express js多个操作gm(GraphicsMagick)模块

与gm(GraphicsMagick)模块一起使用Expressjs。 当前(见代码)操作#1和#2在单独执行时正常工作,但它们不能一起工作(如下所示)。 我想在一个声明中结合这两个操作,有什么build议吗? var express = require('express'); var router = express.Router(); var gm = require('gm'); // GraphicsMagick router.get('/', function(req, res) { gm('image.png') // Operation #1 .composite('topimage.png') .geometry('+200+200') // Operation #2 .drawText(5, 20, 'my text') .fontSize(20) .font(__dirname + 'fonts/MyFont.TTF') .stream(function streamOut (err, stdout, stderr) { stdout.pipe(res); //pipe to response }); }); module.exports = router;

将graphics魔术输出的图像转换为无base64编码的响应

我有一个节点服务器,而不是存储裁剪图像,我想裁剪他们回应一个AJAX调用,并发送到客户端的方式。 我正在存储什么裁剪的信息,以及如何裁剪cookies和身体。 在服务器上裁剪,用base64编码,然后发回给用户。 这是我的代码看起来像 res.set('Content-Type', 'image/jpeg'); gm(request(body.URL)) .crop(req.cookies[name+"Width"],req.cookies[name+"Height"],req.cookies[name+"X"],req.cookies[name+"Y"]) .stream(function streamOut (err, stdout, stderr) { if (err) return next(err); stdout.pipe(base64encode()).pipe(res); stdout.on('error', next); }); 这工作,但我不喜欢它。 我只能通过在base64中编码来实现这个function,但在客户端,这似乎是很慢的解码这个图像。 我宁愿直接发送图像,但我无法得到这个工作。 在不对其进行解码的情况下翻页,导致服务器产生乱码响应。 有一个更好的方法吗? 还是未保存的图像必须编码才能发送?

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 […]

我可以使用node-gm调整内存中的图像大小,还是需要先将其保存起来?

我允许用户上传头像,但是我想在上传时调整头像的大小。 现在看起来,gm让我把它保存到磁盘之前,它resize。 当传入的请求进来时是否有可能调整它的大小? 像这样的东西: var readStream = fs.createReadStream(req.files['profile-picture']['path']); gm(req.files['profile-picture']['path'], 'img.jpg') .write('/path/to/directory/img.jpg', function (err) { if (!err) console.log('done'); });

Node.js中的HTML到PNG服务器端

我正在寻找一个图书馆采取PNG,把它放在一些HTML,然后重新呈现为一个PNG。 示例代码: var renderingTool = require('renderingTool'); var newPng = renderingTool.pngoutBuffer('' + '<div style="border-left: 12px solid red">' + '<img src="src="data:image/png;base64,iVBORw0KGgoAAA…" />' + '</div>' ); 这将需要一个PNG图像,在左侧添加一个红色的边框,并重新呈现为一个PNG。 我知道Phantom.js和gm(它使用GraphicsMagick)。 我无法弄清楚如何用幻影和GM做到这一点,即使是16像素×16像素的图像(每幅图像250ms),速度也很慢。 我希望能够做到这一点~10毫秒。 编辑: 注:我编辑了上面的代码,以显示原始图像已经在内存中作为缓冲区(在上面我转换为base64)。 另外,幽灵可以给HTML代码,而不是一个URL? 我看到的所有例子都是用URL,但是给出实际的代码会好很多。