Как установить и использовать lwip (Облегченный процессор изображений) в Windows для Node.js

Обработка изображений — сложная задача, которую нужно выполнять в Javascript, поэтому, если вы хотите обеспечить беспроблемное использование манипуляций и обработки изображений, вы выберете lwip среди других библиотек обработки изображений, доступных для node.js (например, скудный, модуль обработки изображений, написанный на чистом javascript), потому что lwip использует собственный модуль, написанный на C ++, который сделает обработку изображений быстрой и плавной.

Модуль lwip предоставляет широкие, быстрые и простые возможности обработки и обработки изображений. Нет никаких внешних зависимостей времени выполнения, что означает, что вам не нужно ничего устанавливать в вашей системе.

Поддерживаемые форматы

Расшифровка (чтение):

  • JPEG, 1 3 канала (оттенки серого RGB).
  • PNG, прозрачность поддерживается.
  • GIF, прозрачность поддерживается. Можно читать анимированные GIF-файлы, но будет получен только первый кадр.

Кодировка (запись):

  • JPEG, 3 канала (RGB).
  • PNG (без потерь), 3 канала (RGB) или 4 канала (RGBA).
  • GIF (без анимации)

В этой статье вы узнаете, как легко установить и использовать модуль lwip в вашем проекте node.js за пару минут.

1. Установите узел-гип глобально

Тебе понадобиться Узел-мошенник чтобы использовать модуль lwip. Продолжите установку node-gyp в качестве глобальной переменной в командной строке узла, выполнив следующую команду:

npm install -g node-gyp

node-gyp — это кроссплатформенный инструмент командной строки, написанный на Node.js для компиляции собственных дополнительных модулей для Node.js. Он объединяет проект gyp, используемый командой Chromium, и избавляет от необходимости сталкиваться с различными различиями в сборочных платформах.

2. Установка необходимых инструментов

Для работы с lwip нам понадобятся следующие инструменты, доступные в системе:

  • Visual C ++ Build Environment.
  • Python v2.7.x , Версии v3.x не поддерживаются node-gyp.

Вариант 1: Автоматическая установка

Выполните следующую команду в командной строке узла (запустить от имени администратора):

npm install --global --production windows-build-tools

Этот модуль установит Python 2.7 и компилятор Visual Studio C ++. Установка может занять некоторое время, однако упростит процесс установки.

Настройка инструментов сборки Windows и python

Вариант 2: Ручная установка

Перейти в раздел загрузок в официальный сайт Python и скачать самый последний установщик 2.7.x и продолжайте установку, как вы это делаете с любым установщиком. Не забудьте добавить python в переменную окружения, выбрав опцию в настройке.

Переменная среды установки Windows установщика Python 2.7

Если у вас есть другая версия Python (т.е. v3), вы можете определить, какая версия Python используется для node-gyp, установив ‘--pythonпеременная:

node-gyp --python /path/to/python2.7

Если node-gyp вызывается с помощью npm, и у вас установлено несколько версий Python, тогда вы можете установить в ключе конфигурации npm ‘python’ соответствующее значение:

npm config set python /path/to/executable/python2.7

Теперь, когда у вас есть Python, нам нужна только среда сборки Visual C ++. Это может быть установлено Настройка среды сборки Visual C ++ здесь или установка Visual Studio 2015 (или измените существующую установку) и выберите Общие инструменты для Visual C ++ во время установки. Это также работает с бесплатными выпусками Community и Express for Desktop.

После завершения установки среды Visual C ++ Build выполните следующую команду в командной строке узла, чтобы установить версию 2015 для Visual Studio в конфигурации:

npm config set msvs_version 2015

И ты готов к работе. Если вышеуказанные шаги не сработали, пожалуйста, посетите Руководство Microsoft по Node.js для Windows за дополнительные советы.

3. Установите lwip в проект

Теперь, когда у нас есть все необходимые инструменты для компиляции собственного модуля lwip, мы можем начать его использовать, поэтому, наконец, приступим к установке модуля, выполнив следующую команду в командной строке узла:

npm install lwip

Начнется загрузка модуля, и он немедленно запустит процесс сборки (который может занять некоторое время). Чтобы проверить, все ли мы сделали правильно, мы будем манипулировать следующим изображением (image.jpg):

Не сейчас, пожалуйста, мем мем

И небольшой скрипт для управления им с помощью lwip в node.js (index.js):

var lwip = require('lwip');
lwip.open('image.jpg', function(err, image){
// check err...
// define a batch of manipulations and save to disk as JPEG:
image.batch()
.scale(0.75)          // scale to 75%
.rotate(45, 'white')  // rotate 45degs clockwise (white fill)
.writeFile('output.jpg', function(err){
if(err){
console.log(err);
}
});
});

Сохраните код в файле js (в данном случае index.js) и протестируйте скрипт, используя:

node index.js

Предыдущий скрипт должен создать изображение (ouput.jpg) со следующим изображением:

Модуль ориентации lwip не сейчас

Все операции являются асинхронными, и обработка происходит в пуле потоков, управляемом libuv, который является частью NodeJS. Этот пул потоков отделен от цикла событий, используемого для обработки HTTP-запросов, поэтому использование lwip не должно существенно влиять на обработку HTTP-запросов веб-приложением. Однако пул потоков используется совместно с другими собственными потоковыми модулями, такими как те, которые обеспечивают ввод-вывод базы данных и файловой системы.

Размер пула потоков по умолчанию 4 подойдет для большинства приложений. Однако, если ваше приложение регулярно обрабатывает много изображений одновременно, и вы хотите в полной мере использовать преимущества многоядерной системы или предотвратить тяжелую работу по обработке изображений из-за задержки ввода-вывода базы данных или файловой системы, вы можете увеличить размер пула потоков, установив UV_THREADPOOL_SIZE переменная среды для процесса NodeJS, например:

UV_THREADPOOL_SIZE=8 node index.js

4. Используйте lwip

Все операции выполняются на image объект. image объект может быть получен путем:

  1. Открытие существующего файла изображения или буфера с помощью open метод.
  2. Создание нового объекта изображения с create метод.
  3. Клонирование существующего объекта изображения с image.clone метод.
  4. Извлечение подизображения из существующего объекта изображения с image.extract метод.

Здесь вы найдете несколько примеров странных задач, которые вы можете решить с помощью lwip:

Создание изображения

Создание изображения удобно, если вы хотите взять изображение в качестве холста, на котором будет отображаться или изменяться больше изображений и т. Д. Третий параметр предоставляет цвет холста, по умолчанию прозрачный.

var lwip = require('lwip');
lwip.create(500, 500, 'yellow', function(err, image){
image.writeFile('myimage.jpg', function(err){
if(err){
console.log(err);
}
});
});

Предыдущий фрагмент создаст изображение (квадрат) размером 500x500px с желтым фоном.

Экспорт изображения в base64

Вы можете извлечь содержимое base64 изображения, преобразовав буфер в строку.

var lwip = require('lwip');
lwip.create(300, 300, 'yellow', function(err, image){
image.toBuffer('png', function(err,buffer) {
var base64data = buffer.toString('base64');
var finalBase64String = 'data:image/png;base64,' + base64data;
console.log(finalBase64String);
});
});

Обратите внимание, что буфер будет предоставлять простые данные base64, поэтому, если вы хотите предоставить строку base64, которая может отображаться непосредственно в браузере, вам необходимо добавить «встроенный формат».

Манипулирование изображениями base64

Вы можете манипулировать изображениями из формата base64 непосредственно в lwip, не создавая статический файл. Вместо этого создайте новый экземпляр Buffer с данными Base64 на нем (не забудьте удалить ненужные данные, буфер ожидает простое содержимое base64 или файл будет поврежден).

var lwip = require('lwip');
var base64String = "data:image/jpeg;base64,qweqwe.......";
var encondedImageBuffer = new Buffer(base64String.replace(/^data:image\/(png|gif|jpeg);base64,/,''), 'base64');
lwip.open(encondedImageBuffer, 'jpg', function(err, image){
// check err...
// define a batch of manipulations and save to disk as JPEG:
image.batch().writeFile('myimage.jpg', function(err){
if(err){
console.log(err);
}
});
});

Вы можете прочитать больше примеров и документации библиотеки в официальный репозиторий или же область использования файла readme.

Повеселись !

Ссылка на основную публикацию
Adblock
detector