如何使用MSVC10编译器在x64窗口上的node-canvas中启用jpeg支持?

时间:2015-06-20 11:54:36

标签: node.js windows npm node-canvas

我需要在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构建画布?在网上找到问题但没有关于这个主题的答案。

2 个答案:

答案 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位库 将失败,没有任何有意义的消息)

  • 去 。\ node_modules \ canvas \ build \并修改你的binding.gyp。加 '变量':
  {
    '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',
      ],