Здравствуйте, сегодня я хочу рассказать вам о некоммерческом проекте.
Для тех, кто не в курсе: существует графический редактор с открытым исходным кодом под названием Гимп .
Чтобы рассказать об этом, для простых людей был создан сайт, на котором были размещены уроки и описания этого редактора.
Но речь идет не о самом сайте.
Редактор использует собственный формат кисти.
Пришла идея создать каталог, в котором можно было бы искать нужные кисти и быстро их скачивать.
В чем преимущества проекта для пользователей:
- Отказ от системы «щеточного пакета».
Человек будет скачивать только те кисти, которые ему интересны.
- Подбор кистей по фильтрам и ключевым словам.
Мы постарались реализовать на страницах сайта то, что будет реализовано в GIMP 2.8.
- Удобный просмотр кистей.
Пользователь видит кисть перед загрузкой.
Можно изменить цвет кисти и просмотреть ее в полном размере.
- Перед скачиванием пользователь может опробовать кисть в действии.
Нарисуйте для нее в специальном графическом редакторе.
- Загрузка со страниц сайта.
Никаких вам турбобитов, летитбитов и прочих файлообменников.
- Рейтинг кистей.
Сортировка кистей по качеству.
Мы видим, сколько раз кисть была просмотрена, сколько раз ее скачали (показатель отказов), сколько раз ее рейтинг повышался (в дальнейшем и понижался).
И в зависимости от этого сортируйте кисти по их качеству, а не по дате добавления.
Организация предварительного просмотра кистей
Собственно, то, что представляет собой само это превью, — это всего лишь набросок внешнего вида самой кисти и тестовый мазок ею в разных цветах.
Чтобы начать разработку, мы нашли документацию по кистям, используемым в GIMP. Как оказалось, кисть Gimp в формате GBR устроена достаточно просто — она состоит из заголовка, описывающего саму кисть, и растрового изображения сохраненного изображения.
Основная проблема, с которой пришлось столкнуться, заключалась в получении правильного изображения из растрового изображения.
Сначала была идея сделать распаковку для всего раздела файла, содержащего растровое изображение, но это привело к тому, что полноцветным кистям размером 500х500 пикселей просто не хватало памяти (интерпретатору было выделено до 256 МБ ОЗУ).
Видимо это как-то связано с моделью памяти при организации PHP-массивов, но я не стал копать глубже и решил изменить алгоритм.
Немного изучив документацию, я пришел к выводу, что можно спокойно, хоть и медленно, прочитать файл небольшими порциями с помощью пресловутого file_get_contents(), а затем работать с unpack().
Интерфейс выбора кисти
Но помимо генератора мазков и эскизов кистей был создан еще и интерфейс, позволяющий выбирать кисти по интересующим характеристикам.
Включив фильтр (1) и выбрав одну или несколько меток кистей (2), вам будут показаны кисти, соответствующие вашим требованиям (5).Естественно, было принято решение, что это должно быть быстро и удобно, и именно этому способствовала концепция Ajax-запросов к серверу.Кисти показаны небольшими штрихами, чтобы можно было сразу определить, как кисть поведет себя при рисовании.
Цифры — это размер кисти в пикселях.
При включении тегов (2) параметры поиска можно уточнить с помощью активных тегов (4).
Серая метка (3) неактивна, кистей с такими параметрами нет.
Как известно, самое медленное при работе в сети — это обращение к серверу и ожидание от него ответа.
Исходя из этой парадигмы было решено сделать максимум работы с минимумом запросов, поэтому для любой выборки был сделан 1 запрос, который получал всю необходимую информацию обо всем наборе кистей в формате структуры JSON. Если вы посмотрите на сервис, то увидите, что при нажатии на эскиз кисти открывается окно, в котором содержится вся необходимая информация о кисти, уже полученная с сервера.
Но после открытия окна запускается асинхронный запрос, вызывающий серверный обработчик, подсчитывающий просмотры кисти.
Помимо информации, в этом окне содержится флеш-вставка, позволяющая опробовать кисть «не отходя от кассы».
Производительность без JS
Казалось бы, с Аяксом-Аяксом всё в порядке.Но это не хорошо для всех.
Есть друзья, которые отключают JS, а также поисковые системы, для которых мы сделали постоянную веб-страницу о каждой кисти.
На этой странице представлена как сама кисть, так и ее полное подробное описание.
Помимо самих страниц с кистями, были еще страницы выделений с отметками.
Также было реализовано, что если включен JS, то с этих же страниц можно пользоваться выделениями как обычно.
Увидеть и пощупать интерфейс можно здесь: www.progimp.ru/downloads/brushes Теги: #gimp #открытый исходный код #графические редакторы #кисти #коллекции #открытый исходный код
-
Компьютерные Сети Для Лучшего Подключения!
19 Oct, 24 -
Акции Dell
19 Oct, 24 -
Басня Об «Одной Бутылке»
19 Oct, 24 -
Один Алгоритм Комбинаторной Генерации
19 Oct, 24