n-wp.ru — блог о WordPress

Как проверить размер картинки?

Проблема в том, что существует свой тип миниатюр, который появляется на главной.
Допустим такая функция прописана:

Миниатюры уменьшаются, через css они подгоняются под нужный блок ещё лучше и вообщем все хорошо. Но как можно заметить, такой размер весьма специфический. Он отлично уменьшает вертикальные картинки, но не горизонтальный (которые нам привычнее).
В связи с этим, я сделал новый тип миниатюр. Например:

Этот новый тип не будет уменьшать картинку, а будет её кадрировать, что решает проблему горизонтальных (16:9, 4:3 и т.д.) картинок.
И всё хорошо, но как перед публикацией миниатюрки проверить какое у неё соотношение сторон, что бы знать какого типа миниатюрку запостить?

3 комментария

  • Есть функция wp_get_attachment_metadata, которая возвращает массив мета-данных вложения.

    321 — ID вложения
    Как результат, если вложение с ID=321 является картинкой, то $array будет содержать следующие данные:

    Из этого массива можно извлечь ширину и высоту оригинального изображения:

    Получив ширину и высоту изображения, вы можете поставить условие:
    — если ширина больше высоты, то выводиться горизонтальная миниатюра,
    — иначе выводится вертикальная миниатюра.

    Остается только получить ID миниатюры поста, и подставить в вышеуказанную функцию.

    p.s. Я не программист, поэтому в коде могут быть ошибки. Я лишь описал логику моих рассуждений по данному вопросу.

  • Спасибо за старания, но я уже решил проблему. Тут просто от публикации до одобрения нет возможности прокомментировать или отредактировать пост. Принцип тот же. Вот мой код:

    Миниатюра в моем случае сжимается до 1500×1500, если она меньше этого размера, то не сжимается возвращается оригинал (учитывая то, что фотка выбранная в качестве миниатюры точно меньше это размера). Потому как по дефолту возвращается размер 150×150 (размер ‘thumbnail’) пришлось прибегнуть к такому методу.

  • В php есть функция getimagesize($url), которую далее можно разобрать так: