Ресайзилка картинок для браузера

Тынц: nodeca.github.io/pica/demo/

Есть мысль ресайзить толстые картинки прямо в браузере, и я ее всячески думаю. Пока заколбасили довольно шустрый ресайзер с ланцешевским фильтром. Из недостатков - фик знает, что с гамма-коррекцией, в яваскрипте просто нет к ней доступа, если не парсить jpeg вручную. Ну и слегка налажал в unsharp mask на финальной корректировки яркости - если эффект сделать максимальным, то видно что цвета плывут. Надеюсь в скором времени починить.

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

Библиотека от нодеки не зависит, так что кому надо - пользуйтесь на здоровье. Минимальные требования - любой современный браузер с поддержкой канваса. А если там еще и вебворкеры есть - будет скейлить в отдельном потоке, чтобы не тормозить интерфейс.

UPD. Для тех кто не в курсе про фильтры ланцеша. Обычно люди считают, что кактинки через канвас ресайзить можно. Ну можно, только фигово. Канвас использует nearest neighbor фильтр для скорости, и картинка пикселируется. Результат можно увидель в демке, на нижней картинке. В pica все сделано честно, на нанотехнологиях. Для реалтайма это конечно не подойдет, но для аплоадов самое то.

  • 881
Comments
paradoxst

Посмотрите www.plupload.com
Умеет и ресайзить в браузре, и большие файлы по частям загружать.
Сам пользую.

Vitaly

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

Boev_Dmitry

на андроиде (4.4.4) падает браузер после выбора файла =)

Vitaly

Бывает такая фигня. У андроида странный менеджер памяти. После толстых игрушек у меня тоже мобилка дурит. Какой телефон и какой размер файла?

Boev_Dmitry

планшет nexus 7 (2013)
upd. с третьей попытки все заработало. ресайзит вполне сносно, даже большую часть эстетов удовлетворит, я думаю. с ближним соседом не сравнить - на 2 порядка лучше. файл 1900 на 2800 примерно

Vitaly

Нормальный девайс. 1900*2800*4 = 21 мегабайт надо, чтобы загрузить. Странно что валится. Ну пока нодеку допилим, глядишь и ондроеды подкрутят. На крайняк отключу для мобилок, если совсем жопа будет.

А ближний сосед это кто? Оригинал (слева) на ретиновских дисплеях в 2 раза выше плотность имеет, поэтому с ним сравнивать не корректно. Еще для сравнения лучше unsharp amount убрать,

ADF

Так JS врукопашную к ARGB доступ может иметь, для реального времени конечно не удобно, но разовые операции с жирными растрами - даже на мобилках и планшетах мгновенно делает.
Чтобы врукопашную не распарсивать - в невидимый канвас 1:1 картинку орисовать, а потом уже из его растра выковыривать и перековыривать 😃