ImageMagick и миниатюры
July 5, 2011 , revised October 1, 2012 in Ruby on RailsОткрытие дня - оказывается, настройки ImageMagick по умолчанию далеки от идеальных, если говорить о генерации уменьшенных версий изображений.
Зачем платить больше?
Если на страничке каталога показывается 10 изображений – значит пользователь загружает 600 лишних килобайт.
Увы, именно эти настройки использует Paperclip. (И твой велосипед на PHP тоже.)
Параметр -strip
убирает из картинки EXIF-данные и цветовые профили. С вероятностью 99% на загружаемых пользователем фотографиях эти данные будут.
Параметр -quality
указывает качество сохранения JPEG. По умолчанию ImageMagick использует качество 92 - так, видимо, безопаснее, но для картинки-миниатюры размером 100х100 такое качество совсем не нужно.
(С -quality 92
вышеприведенная картинка занимает 5 килобайт.)
Чтоб спасти от заблуждений Paperclip, нужно добавить в has_attached_file
параметр convert_options
:
class Post
has_attached_file :image,
:styles => {:thumb => '100x100'},
:convert_options => {:thumb => '-strip -quality 50'},
end
И, напоминаю, пересоздать все миниатюры для Paperclip можно одной командой Rake:
rake paperclip:refresh CLASS=Post
Разумеется, процедура эта будет долгая. Можно получить большую долю выгоды одним удалением профилей. С этим справится непосредственно ImageMagick:
find public/system -iname "*.jpg" | xargs mogrify -strip
У меня из 6.1G изображений осталось 4.9G, а размер главной страницы сократился на 150 килобайт. Неплохо, да?
Понравился пост? Купи мне кофе