2015-06-20 50 views
8

我需要在nodejs服务器端渲染jpeg图像。我按照以下构建指令安装了canvas npm模块 :https://github.com/Automattic/node-canvas/wiki/Installation---Windows 我有C:\ libjpeg-turbo \,因为它在手册中提到过。如果我做的:如何使用MSVC10编译器在x64窗口上的node-canvas中启用jpeg支持?

NPM安装帆布

那么这段代码不onload事件启动:

var data = fs.readFileSync("./t.jpg"); var img = new Image(); 
img.onload = function() { 
    console.log("onload"); 
}; 
img.src = data; 

(其工作原理与巴纽数据)。如果我在我的命令行中指定--with-jpeg,那么MSVC会抱怨缺少libjpeg.h。在这之后,npm删除了msvc项目的文件,所以我无法自己设置路径(是否可以关闭此清理?)

那么,如何为支持jpeg的Windows创建画布?在网上发现了关于这个话题的问题,但没有答案。

回答

0

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

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

安装MSVC10和64位nodejs。 当你构建失败,请使用以下distributives,其中你会发现在网络上:

  • 解压GTK + -bundle_2.22.1-20101229_win64.zip到c:/ GTK。使用此 版本,别人失败对我来说

  • 设置的libjpeg涡轮增压-1.4.0-vc64.exe到C:\ libjpeg的涡轮(32位库 会失败,并没有meaningfull消息)

  • 去 。\ 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' 
       ] 
      }] 
      ] 
     }] 

然后exec后面的文件夹,其中.gyp文件位于命令:

节点GYP配置

点头e-gyp build

这些模块的IMHO库应该作为npm发行版的一部分包含进来,它的奇怪之处在于期望来自nodejs程序员的WIN32/C++专业知识...