我正在尝试创建驻留在服务器上的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。什么都没有。
答案 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
所以 - 节点模块和你的代码对我有用。