2015-06-20 48 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++專業知識...