繁体   English   中英

如何使用MSVC10编译器在x64窗口上的节点画布中启用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安装画布

那么这段代码就不会启动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构建画布呢? 在网上发现有关此主题的问题,但没有答案。

安装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配置

node-gyp构建

此类模块的IMHO库应作为npm发行版的一部分包含在内,奇怪的是期望来自nodejs程序员的WIN32 / C ++专业知识...

在我看来,binding.gyp在第143行缺少'include_dirs'指令,因此编译器可以在C:\\ libjpeg-turbo \\目录中找到libjpeg.h。 尝试插入:

      'include_dirs': [
        'c:/libjpeg-turbo',
      ],

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM