2015-06-20 19 views
8

Potrzebuję renderować obrazy jpeg na serwerze serverowym nodejs. Instaluję moduł NPM npm z następującymi instrukcjami kompilacji: https://github.com/Automattic/node-canvas/wiki/Installation---Windows Mam C: \ libjpeg-turbo \ jak wspomniano w instrukcji. Jeśli zrobić:Jak włączyć obsługę jpeg w kanale węzła w oknach x64 z kompilatorem MSVC10?

npm zainstalować płótno

potem ten fragment kodu nie uruchomi onload:

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

(działa z danymi .png). Jeśli podam --with-jpeg w moim wierszu poleceń, to MSVC narzeka na brak libjpeg.h. Zaraz po tym npm usuwa plik z projektem msvc, więc nie jestem w stanie samodzielnie ustawić ścieżek (czy można wyłączyć to czyszczenie?)

Jak mogę utworzyć płótno dla okien z obsługą jpeg? Znaleziono pytania, ale nie ma odpowiedzi na ten temat w sieci.

Odpowiedz

0

Wygląda na to, że binding.gyp brakuje dyrektywy "include_dirs" w linii # 143, więc kompilator może znaleźć libjpeg.h w katalogu C: \ libjpeg-turbo \. Spróbuj wstawić:

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

Zainstaluj MSVC10 i 64bit nodejs. Kiedy budowa nie powiedzie się, należy użyć następujących plików instalacyjnych, które znajdziemy w internecie:

  • rozpakuj GTK + -bundle_2.22.1-20101229_win64.zip do c:/GTK. Użyj tej wersję, inni nie dla mnie

  • setup libjpeg-turbo-1.4.0-vc64.exe do katalogu C: \ libjpeg-turbo (libs 32bit zawiedzie bez meaningfull wiadomości)

  • przejść do . \ node_modules \ canvas \ build \ i zmodyfikuj swój binding.gyp. Dodaj 'zmienne':
{ 
    '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' 
    } 

a także

['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' 
       ] 
      }] 
      ] 
     }] 

następnie Exec następujące polecenia w folderze, w którym znajduje się plik .gyp:

węzła Gyp skonfiguruj

skinienie głową e-gyp build

Biblioteki IMHO dla takich modułów powinny być dołączone jako część dystrybucji npm, dziwne jest oczekiwać doświadczenia WIN32/C++ od programisty nodejs ...

Powiązane problemy