如何使用 MSVC10 编译器在 x64 windows 上的 node-canvas 中启用 jpeg 支持?
How to enable jpeg support in node-canvas on x64 windows with MSVC10 compiler?
我需要在 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 项目的文件后,我无法自己设置路径(是否可以关闭此清理?)
那么如何为 windows 构建支持 jpeg 的 canvas?在网上找到关于此主题的问题但没有答案。
在我看来 binding.gyp 在第 143 行缺少 'include_dirs' 指令,因此编译器可以在 C:\libjpeg-turbo\ 目录中找到 libjpeg.h。尝试插入:
'include_dirs': [
'c:/libjpeg-turbo',
],
安装 MSVC10 和 64 位 nodejs。
当您的构建失败时,请使用以下可在网上找到的分配器:
解压 gtk+-bundle_2.22.1-20101229_win64.zip 到 c:/gtk 。用这个
版本,其他人对我失败
设置 libjpeg-turbo-1.4.0-vc64.exe 到 C:\libjpeg-turbo(32 位库
会因为没有有意义的消息而失败)
- 前往
.\node_modules\canvas\build\ 并修改您的 binding.gyp。添加
'variables':
{
'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 配置
node-gyp 构建
恕我直言,此类模块的库应作为 npm 发行版的一部分包含在内,期待来自 nodejs 程序员的 WIN32/C++ 专业知识很奇怪...
我需要在 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 项目的文件后,我无法自己设置路径(是否可以关闭此清理?)
那么如何为 windows 构建支持 jpeg 的 canvas?在网上找到关于此主题的问题但没有答案。
在我看来 binding.gyp 在第 143 行缺少 'include_dirs' 指令,因此编译器可以在 C:\libjpeg-turbo\ 目录中找到 libjpeg.h。尝试插入:
'include_dirs': [
'c:/libjpeg-turbo',
],
安装 MSVC10 和 64 位 nodejs。 当您的构建失败时,请使用以下可在网上找到的分配器:
解压 gtk+-bundle_2.22.1-20101229_win64.zip 到 c:/gtk 。用这个 版本,其他人对我失败
设置 libjpeg-turbo-1.4.0-vc64.exe 到 C:\libjpeg-turbo(32 位库 会因为没有有意义的消息而失败)
- 前往 .\node_modules\canvas\build\ 并修改您的 binding.gyp。添加 'variables':
{ '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 配置
node-gyp 构建
恕我直言,此类模块的库应作为 npm 发行版的一部分包含在内,期待来自 nodejs 程序员的 WIN32/C++ 专业知识很奇怪...