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

尝试使用node.js和GD或imagemagick访问和操作图像,node.js,imagemagick,gd,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("fai

我正在尝试创建驻留在服务器上的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);
});
日志:错误:命令失败:execvp():没有这样的文件或目录

但是test.jpeg文件肯定在那里

var fs = require('fs');
fs.open(filePath, 'r', function (err, fd) {
    console.log("open file ... " + err + " " + fd);
});
很好!?没有记录任何错误


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

根据我对节点imagemagick模块文档的理解,该模块提供了对imagemagick的comandline二进制文件的访问。您是否安装了imagemagick(命令行二进制文件)?它们在你的路径上吗

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

如果您使用的是win32,那么该命令将不起作用,您必须检查名为Identity.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

所以-节点模块和您的代码适合我。

太好了,这对我使用imagemagick很有帮助。我重新安装了它,它工作了。谢谢。GD的问题是,当前的节点版本似乎有缺陷。降级到0.1.6,它又开始工作了。