Как включить поддержку jpeg в node-canvas в x64 windows с помощью компилятора MSVC10?

Мне нужно визуализировать изображения JPEG на стороне сервера nodejs. Я устанавливаю модуль canvas npm со следующими инструкциями по сборке: https://github.com/Automattic/node-canvas/wiki/Installation---Windows меня есть C:\libjpeg-turbo\, как указано в руководстве. Если я сделаю:

NPM установить холст

тогда этот фрагмент кода не запускается при загрузке:

 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? Нашли вопросы, но нет ответов по этой теме в сети.

2 ответа

Решение

Похоже, в binding.gyp отсутствует строка 'include_dirs' в строке #143, поэтому компилятор может найти libjpeg.h в каталоге C:\libjpeg-turbo\. Попробуйте вставить:

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

Установите MSVC10 и 64-битные узлы. При сбое сборки используйте следующие дистрибутивы, которые вы найдете в сети:

  • распакуйте 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:

настройка узла

сборка узла

ИМХО библиотеки для таких модулей должны быть включены в состав дистрибутивов npm, странно ожидать опыта WIN32/C++ от программиста nodejs...

Другие вопросы по тегам