尝试使用node.js和GD或imagemagick访问和操作图像

时间:2011-08-10 21:38:32

标签: node.js imagemagick gd

我正在尝试创建驻留在服务器上的jpg缩略图。我尝试使用node-gd和/或node-imagemagick,但都无法访问该文件:

var gd = require('node-gd');
gd.openJpeg("./test.jpeg", function (img, path) {
    if (img) {
        console.log("file opened ... " + img);
    }
    else {
        console.log("failed to open file ...");
    }
});

日志:无法打开文件...

ImageMagick的:

var im = require('imagemagick');
im.identify('./test.jpeg', function (err, features) {
  if (err) throw err;
  console.log(features);
});

logs:错误:命令失败:execvp():没有这样的文件或目录

但是test.jpeg文件肯定存在。

var fs = require('fs');
fs.open(filePath, 'r', function (err, fd) {
    console.log("open file ... " + err + " " + fd);
});

工作得很好!?没有记录错误。

我在jpeg上尝试了chmod 0777。什么都没有。

1 个答案:

答案 0 :(得分:2)

根据我对nodemagick模块for node的文档的理解,该模块提供了对imagemagick的comandline二进制文件的访问。你有imagemagick(命令行二进制文件)安装?他们在你的PATH中吗?

您正在寻找名为“识别”的二进制文件。您可以通过运行“which identify”来显示它的路径。它应该给你一个完整的路径 - 如果提示刚刚返回,你没有安装它或它不在你的路径。

如果你在win32上哪个命令无效,你必须检查一个名为identify.exe的二进制文件。

(从未与gd一起工作 - 所以我不确定那里)

这里是您的代码的imagemagick示例 - 请注意,识别路径可能在您的环境中有所不同:

snowflake:Desktop rhaen$ node check_im.js 
{ format: 'JPEG', width: 320, height: 250, depth: 8 }
snowflake:Desktop rhaen$ which identify
/usr/local/bin/identify

所以 - 节点模块和你的代码对我有用。