node.js - 运行 ImageMagick 的 NodeJs 转换目录中的所有图像

标签 node.js imagemagick

这是我最近遇到的 node.js 的基本 imagemagick 设置。我知道我问的问题是新手,但我是 node js 和 imagemagick 的新手,我想尝试让它动态化。当前脚本波纹管正在裁剪一个特定文件,有没有办法让它对目录 /before 中的所有文件应用转换,然后将其输出到目录 /after ?此外,我想对目录中的所有图像执行的操作是在每个图像上应用水印(代码中的裁剪操作仅来自示例)。

var http = require("http");
var im = require("imagemagick"); 

var args = [
  "image.png",
  "-crop",
  "120x80+30+15",
  "output.png"
];

var server = http.createServer(function(req, res) {

  im.convert(args, function(err) {
    if(err) { throw err; }
    res.end("Image crop complete");
  });

}).listen(8080);

最佳答案

是的,您可以通过所有文件本身实现 foreach 来实现。 您还需要安装异步模块:

npm install async

示例代码:

var async = require('async'),
    fs = require('fs'),
    im = require('imagemagick'),
    maxworkers = require('os').cpus().length,
    path = require('path');

module.exports = resize;

function resize(params) {
    var queue = async.queue(resizeimg, maxworkers);

    fs.readdir(params.src, function(err, files) {
        files.forEach(function(file) {
            queue.push({
                src: path.join(params.src, '/', file),
                dest: path.join(params.dest, '/', file),
                width: params.width,
                height: params.height
            })
        });
    });
}

function resizeimg(params, cb) {
    var imoptions = {
        srcPath: params.src,
        dstPath: params.dest
    };
    if (params.width !== undefined) imoptions.width = params.width;
    if (params.height !== undefined) imoptions.height = params.height
    im.resize(imoptions, cb);
}

然后在你的代码中:

var http = require("http");
var resize = require("./resize");

var server = http.createServer(function(req, res) {

    resize({
      src: '/source/folder',
      dest: '/destination/folder',
      width: 300
    });

}).listen(8080);

关于node.js - 运行 ImageMagick 的 NodeJs 转换目录中的所有图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30274534/

相关文章:

node.js - 使用 Passport 注册后防止用户身份验证

node.js - 从我之前部署的 firebase 控制台获取代码

java - 使用 Java 运行 image magic 的转换命令会出现无法加载模块错误

python - ImageMagick可以用python程序打包吗?怎么做?

java - 通过 java 命令使用 image magick 转换图像显示错误

javascript - 谷歌云存储不一致,在可恢复上传完成后 500 毫秒返回 404

node.js - 无法使用npm安装oracle包

php - 图像魔术 : PHP Script giving 'import: unable to open X server'

node.js - Node.js 请求 : HPE_INVALID_HEADER_TOKEN

c# - 使用 ImageMagick 将图像压缩为 azure blob