Как стать автором
Поиск
Написать публикацию
Обновить

Модерируемая коллекция кистей для GIMP

Время на прочтение3 мин
Количество просмотров4.4K
Здравствуйте, хочу сегодня поведать вам об одном некоммерческом проекте.

Для тех, кто не в теме: существует опенсорсный графический редактор, который называется Gimp. Чтобы рассказать о нем, для простых людей был создан сайт, на котором были размещены уроки и описания этого редактора. Но речь пойдет не о самом сайте.

Редактор использует свой формат кистей. Пришла мысль о создании каталога, в котором можно было бы искать нужные кисти и быстро их скачивать.

В чем плюсы проекта для пользователей:
  • Отказ от системы «пакетов кистей». Человек будет скачивать только те кисти, которые ему интересны.
  • Подбор кистей по фильтрам и ключевым словам. То, что будет реализовано в GIMP 2.8 мы попытались реализовать на страницах сайта.
  • Удобный просмотр кистей. Пользователь видит кисть перед скачиванием. Может изменить цвет кисти и посмотреть ее в полном размере.
  • Перед скачиванием пользователь может опробовать кисть в действии. Порисовать ей в специальном графическом редакторе.
  • Скачивание со страниц сайта. Никаких тебе турбобитов, летитбитов и других файлообменников.
  • Рейтинг кистей. Сортировка кистей по качеству. Мы видим сколько раз кисть просмотрели, сколько раз ее скачали (показатель отказов), сколько раз ей подняли (в будущем и опустили) рейтинг. И в зависимости от этого, сортировать кисти по их качеству, а не дате добавления.


Организация предпросмотра кистей


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

image

Для начала разработки была найдена документация по кистям, используемым в GIMP. Как оказалось, кисть Гимпа в формате GBR устроена достаточно просто — она состоит из заголовка, описывающего саму кисть и битмапа хранимого изображения.

Основной проблемой, которая стояла, было получение корректной картинки из битмапа. Сначала была идея делать unpack для всего участка файла, содержащего битмап, но это привело к тому, что на полноцветных кистях размером в 500х500 точек просто заканчивалась память (интерпретатору отводилось вплоть до 256 МБ ОЗУ). Судя по всему это как-то связано с моделью памяти при организации массивов PHP, но копать вглубь я не стал, а решил изменить алгоритм. Немного изучив документацию пришел к выводу, что можно спокойно, хоть и медленно, читать файл маленькими порциями используя пресловутый file_get_contents(), а потом работать с unpack().

Интерфейс подбора кистей


Но кроме самого генератора штрихов и эскизов кисти, был создан и интерфейс позволяющий отбирать кисти по интересующим признакам.

image

Включив фильтр (1) и выбрав одну или несколько меток для кисти (2) вам покажут кисти, которые соответствуют вашим требованиям (5). Кисти показываются в виде небольших штрихов, чтобы сразу можно было определить как кисть будет себя вести при рисовании. Цифры — это размер кисти в пикселях.

При включении меток (2), параметры поиска можно уточнить активными метками (4). Метка серого цвета (3) неактивна, кистей с такими параметрами нет.


Естественно было принято решение, что он должен быть быстрым и удобным, ну а этому как раз и способствовала концепция аякс запросов к серверу.

Как известно, самым медленным при работе в сети считается обращение к серверу и ожидание ответа от него. Опираясь на эту парадигму было решено сделать максимум работы при минимуме запросов, поэтому при любой выборке делался 1 запрос, который получал всю необходимую информацию о всем наборе кистей в формате JSON-структуры.

Если вы посмотрите на сервис, то увидите, что по клику на эскиз кисточки происходит открывание окна, в котором есть вся необходимая информация по кисти, уже полученная от сервера. Зато после открывания окна запускается асинхронный запрос, вызывающий серверный обработчик, подсчитывающий просмотры кисти. Кроме информации в этом окне реализована флеш-вставка позволяющая опробовать кисть «не отходя от кассы».

image

Работоспособность без JS


Казалось бы, аякс-аяксом и все хорошо. Но хорошо не для всех. Есть некоторые товарищи, которые отключают JS, а также поисковые системы, для которых мы сделали по обычной веб-страничке про каждую кисть. На этой странице есть и кисть и ее полное подробное описание. Кроме самих страниц с кистями, были сделаны и страницы выборок с метками. Реализовано было и то, что если включен JS, то с этих самых страниц можно будет пользоваться выборками как обычно.

Посмотреть и пощупать интерфейс можно тут: www.progimp.ru/downloads/brushes
Теги:
Хабы:
Всего голосов 67: ↑58 и ↓9+49
Комментарии28

Публикации

Ближайшие события