簡體   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