Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 如何传递图像缓冲区数据到gm in()GraphicsMagic大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
var buf = require('fs').readFileSync('test.jpg');

gm().in('-page','+0+0').in(buf,'test.jpg').write('output.jpg',function (err) {
     if (err) console.log(err);
})

在这种情况下,我想传递缓冲区数据作为gm.in()方法的输入。

下面是我引用的链接,但在其中,图像路径用作输入。我想使用缓冲区数据作为输入。我如何做到这一点?

Tile four images together using Node.js and GraphicsMagick

解决方法

实际上,我是创建一个海报与两个不同的图像一个是模板图像“背景”和第二是顶部的图像与一些文本。我试过gm但我宽松的图像质量。有人指导我使用缓冲区数据作为输入,以提高图像质量。我试了,但不知道如何传递Buffer数据作为输入。
所以最后我决定使用命令字符串的节点子进程。这里是我与你分享的示例代码

var fs = require('fs');

var gm = require("gm");
var exec = require('child_process').exec;
var IMAGEFILEPATH = "/images";
var gmcreateImage = function() {

var imageConfig = {"topimage":{"density":"300x300","startx":925,"starty":650,"width":575,"height":825},"offers": [
          {"startx": 75,"starty": 850,"msg": "SAVE 5$","textcolor": "#4f61ac","font": "Arial Bold","fontsize":34,"stroke":{"color":"#4f61ac","width":4}},{"startx": 75,"starty": 970,"msg": "per gallon","starty": 1150,"msg": "With the purchase of","textcolor": "black","font": "Arial","fontsize":18,"stroke":{"color":"black","width":1}},"starty": 1260,"msg": "any Pepsi Z0 S2","fontsize":16,"starty": 1370,"msg": "on all flavours","starty": 1480,"msg": "Ask for details.","width":1}}
]};
    var addLast=imageConfig.topimage.last;
    var commandStr = "gm convert '-page' '+0+0' '-units' 'PixelsPerInch' '-density' '" + imageConfig.topimage.density + "' '" + IMAGEFILEPATH+ "/template.jpg' ";

    var imageActualPosition={};
    imageActualPosition["x"] = imageConfig.topimage.startx;
    imageActualPosition["y"] = imageConfig.topimage.starty;

    if (!addLast) {
        commandStr += " '-page' '+" + imageActualPosition["x"] + "+" + imageActualPosition["y"] + "' '" + IMAGEFILEPATH + "/top.jpg' ";
    }

    var offers = imageConfig.offers;
    for (var i in offers) {
        var color = offers[i].textcolor;
        var startX = offers[i].startx;
        var startY = offers[i].starty;
        var font = offers[i].font;
        var fontSize = offers[i].fontsize;
        var msg = offers[i].msg;
        var offerStr = "";
        if (offers[i].stroke) {
            offerStr += " '-stroke' '" + offers[i].stroke.color + "' '-strokewidth' '" + offers[i].stroke.width + "'";
        }
        offerStr += " '-fill' '" + color + "' '-pointsize' '" + fontSize + "' '-draw' 'text " + startX + " " + startY + " \"" + msg + "\"'";
        commandStr += offerStr;
    }
    if (addLast) {
        commandStr += " '-page' '+" + imageActualPosition["x"] + "+" + imageActualPosition["y"] + "' '" + IMAGEFILEPATH + "/top.jpg' ";
    }
    var finalImage="done.jpg";
    commandStr += " '-mosaic' '-quality' '100' '" + IMAGEFILEPATH + finalImage + "'";
    exec(commandStr,function(err,stdout,stderr) {
            if (err) {
                console.log("Error while execuTing gm commands" + err);
                return;
            } else {
                console.log("Done See your image");
            }
    })
};
gmcreateImage();

大佬总结

以上是大佬教程为你收集整理的node.js – 如何传递图像缓冲区数据到gm in()GraphicsMagic全部内容,希望文章能够帮你解决node.js – 如何传递图像缓冲区数据到gm in()GraphicsMagic所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。