2011-08-10 40 views
0

我试图创建驻留在服务器上的jpg的缩略图。我尝试使用节点GD和/或节点的ImageMagick但也可以访问该文件:试图通过node.js和GD或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。没有。

回答

2

从我所了解的用于节点的imagemagick模块的文档来看,该模块提供了对imagemagick的命令行二进制文件的访问。你有没有安装imagemagick(命令行二进制文件)?他们是否在你的外壳?

您正在查找名为“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 

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

+0

太棒了,这帮我imagemagick。我重新安装它,它的工作。为此。 GD的问题是,目前的节点版本似乎是越野车。降级到0.1.6,并且再次运行。 – pkyeck