Николай Ланец
30 июня 2013 г., 16:40

PHP-функция getimagesize

Так как MODX — это не только среда для разработки веб-проектов, а еще и PHP-фреймворк, и в разработке используются не только MODX-объекты, а еще и на чистом PHP пишем, и так как хочу опубликовать уже вторую заметку о чисто ПХП-шной функции, создаю-таки отдельную ветку под это дело. Думаю, кому-нибудь да пригодится.
В этот раз хочу написать заметку про функцию getimagesize. Столкнулся с ней сейчас, когда опять ковырял плагин DirectResize (пара косяков в нем как была два года назад, так до сих пор и есть...).
Так вот, чем же интересна эта функция? Интересна она тем, что не только определяет размер картинки, но еще и определяет ее mime-тип, и формирует HTML-атрибуты WIDTH и HEIGHT.
Вот результат выполнения этой функции:
Array ( [0] => 500 [1] => 331 [2] => 2 [3] => width="500" height="331" [bits] => 8 [channels] => 3 [mime] => image/jpeg )
Кстати, столкнулся с задачей подружить bootstrap + lazyload.js + masonry.js (или isotope.js), а для этого должны выставляться размеры в теге изображения. Удивлен, что ни один ресайзер (или в доках не описано?) не выставляет таких плейсхолдеров как [[+width]] и [[+height]]. Странно. Такая редкая необходимость? PS вообще, хороших ресайзеров, с тонкой настройкой качества изображения, работой с источником файлов и кучей полезных плейсхолдеров на все случаи жизни то и нет. Кажется, что такого инструмента очень не хватает. (к вопросу modx.pro/help/7282/ ) Изображения ( в плане качества генерируемых преваьюшек) штука весьма специфическая…
PPS Всем лентяям: готовый модификатор modx.com/extras/package/imgattr с getimagesize, выставляющий соответствующие плейсхолдеры
С ресайзерами очень много тонкостей. Для себя давно уже использую собственный сниппет на базе imagick. Умеет сейчас гораздо меньше того же phpThumbOf, но для меня более предсказуемый и умеет то, из-за чего и пришлось его писать, так как phpThumbOf просто не справляется с некоторыми задачами (правильное заполнение при zc с альбомными и панормаными картинками). Но в паблик это не известно когда появится и появится ли вообще.
Ввиду того, что поисковики весьма строго ранжируют сайты и за вес изображений в т.ч., качество превьюшек и возможность настроек очень насущная проблема. Если кто то будет готов представить серьезный по возможностям инструмент, то готов буду участвовать материально. Краудфандинг ли, или просто частная договоренность, но тема нужная. К вашим «правильное заполнение при zc с альбомными и панорамными картинками» добавить бы источники файлов, выбор- кеширование\статичная картинка и т.п. и т.д)) ....
Вы можете составить подробный список пожеланий к такому компоненту, можно будет его использовать за основу под публичный компонент. Хоть мой компонент и не умеет много, но как практика показывает, совсем много и не надо. Но для меня наиболее частая задача — это подготовка конечной JPEG-картинки из нескольких прозрачных слоев (PNG, GIF и т.п.). Часто на сайтах используются красивые плашки под картинками, и чтобы эти картинки работали, приходится загружать ПНГшки, которые значительно тяжелей джпега. И вот моя задача — брать ПНГшку, ресайзить ее, накладывать на плашку и выдавать конечный джпег. Активно использовал его здесь: www.drovyanka.ru/ (правда там плашки нет, но где-то я их уже делал, просто не помню). Вторая задача — это ЧПУ. Пути типа www.drovyanka.ru/assets/components/imagick/cache/9d79b3f27487d9803c67d728a5b95ec7.jpg — не круто, ибо простая смена параметров — сразу изменение и пути. В итоге можно кучу дублей картинок наплодить и 404-ых. По моим наблюдениям поисковики вообще плохо кушают подобные пути. В итоге я стал делать так, например: www.radimax.ru/gallery/portfolio/big/64/588.jpg Здесь уже абсолютная ссылка, но на самом деле это опять-таки идет на ресайзер, только через подмену УРЛов на уровне сервера. А там и параметры прописаны. То есть можно менять параметры ресайза, но адрес из-за этого уже не страдает. Но .htaccess или nginx-конфиги править не очень удобно, потому хочу запилить эту подмену в пакет на уровне плагина. Да, отдача через MODX дольше, но зато универсальней и проще. А кому быстрее надо будет — смогут подмену прописать уже на уровне конфигурации сервера.
Ок. Свои хотелки (вероятно избыточные) сформулирую. Ибо как доходит до developers.google.com/speed/pagespeed/insights/, то «боль и слезы»)) Очень нужен компромисс качества и веса, это в самую первую очередь. Конечно, нужных настроек и работу с источниками файлов, что и предстоит вспомнить из насущного. (пока повторяю одно и то же как мантру, извиняюсь).

Добавить комментарий