我需要在nodejs服务器端渲染jpeg图像。我安装了canvas npm模块 以下构建说明:https://github.com/Automattic/node-canvas/wiki/Installation---Windows 我有C:\ libjpeg-turbo \,因为它在手册中提到。如果我这样做:
npm install canvas
然后这段代码没有启动onload:
var data = fs.readFileSync("./t.jpg"); var img = new Image();
img.onload = function () {
console.log("onload");
};
img.src = data;
(适用于.png数据)。如果我在命令行中指定--with-jpeg,那么MSVC会抱怨缺少libjpeg.h。在这个npm之后用msvc项目删除文件,所以我自己无法设置路径(是否可以关闭此清理?)
那么如何使用jpeg支持为windows构建画布?在网上找到问题但没有关于这个主题的答案。
答案 0 :(得分:3)
安装MSVC10和64位nodejs。 当您的构建失败时,请使用以下分发版,您可以在网上找到它们:
将gtk + -bundle_2.22.1-20101229_win64.zip解压缩到c:/ gtk。用这个 版本,其他人对我失败
将libjpeg-turbo-1.4.0-vc64.exe设置为C:\ libjpeg-turbo(32位库 将失败,没有任何有意义的消息)
{ 'GTK_Root%': 'C:/GTK', # Set the location of GTK all-in-one bundle 'with_jpeg%': 'true', 'libjpeg_root%':'C:/libjpeg-turbo', 'with_gif%': 'false', 'with_pango%': 'false', 'with_freetype%': 'false' }
以及
['with_jpeg=="true"', {
'defines': [
'HAVE_JPEG'
],
'conditions': [
['OS=="win"', {
'libraries': [
'-l<(libjpeg_root)/lib/jpeg-static.lib','-l<(libjpeg_root)/lib/jpeg.lib'
],
'include_dirs': [
'<(libjpeg_root)/include'
]
}, {
'libraries': [
'-ljpeg'
]
}]
]
}]
然后在文件夹中执行以下命令,其中.gyp文件位于:
node-gyp configure
node-gyp build
这些模块的IMHO库应该作为npm发行版的一部分包含在内,对于期望来自nodejs程序员的WIN32 / C ++专业知识来说,这很奇怪......
答案 1 :(得分:0)
在我看来像binding.gyp缺少&#39; include_dirs&#39;第143行的指令,因此编译器可以在C:\ libjpeg-turbo \目录中找到libjpeg.h。尝试插入:
'include_dirs': [
'c:/libjpeg-turbo',
],