Доброго времени суток, читатель!
Как-то понадобилось мне в проекте, работающем на node.js, обработка изображений. И чтоб скачал файлик, закинул в папку и подключил как модуль. Ан нет, таких в природе не оказалось. По этому тогда пришлось воспользоваться node-imagemagick. Но сейчас пост не о этой библиотеке.
Пост о том, что захотелось сделать такую библиотеку, которую скачал, закинул файлик в проект, подключил модуль и всё работает! Ну и сделал. Правда поддержка gif‘ок не реализована, но я надеюсь на огромное сообщество, которое заинтересуется и поможет доделать библиотеку.
Назвал её по простому, imageLib.js, и на github выложил, правда под MIT.
Замеры скорости не производил, да и незачем, ясно же, что работает она медленнее всех существующих. Но ради идеи оно того стоило.
А вот и пример чтения PNG изображения и последующая вставка холста размером 200х200 пикселей с черной рамкой и прямоугольником в это изображение:
var imageLib = require('./imageLib.js'); imageLib('./images/trees.png').pngToData(function() { var that = this; imageLib(200, 200).create(function() { var x, y; for(x=20; x < 180; x++) { for(y=20; y < 40; y++) { this.setPixel(x, y, 255, 0, 0, 255); // black } } for(y=0; y < this.height; y++) { this.setPixel(0, y, 255, 0, 0, 255); this.setPixel(this.width-1, y, 255, 0, 0, 255); } for(x=0; x < this.width; x++) { this.setPixel(x, 0, 255, 0, 0, 255); this.setPixel(x, this.height-1, 255, 0, 0, 255); } this.pasteTo(that, 10, 10, true); that.toPng('./images/trees_samp.png'); }); });
С помощью библиотеки можно читать и записывать JPEG, PNG картинки, изменять их размер. Также можно узнать цвет и альфа канал пикселя, или же их перезаписать. Ну и соответственно копирование из одной картинки в другую.
Полный список функций и их примеры можно найти на странице модуля:
Ссылка на GitHub.com: github.com/lampaa/imageLib
Ссылка на node.js: node.js
ссылка на оригинал статьи http://habrahabr.ru/post/187452/
Добавить комментарий