Обрезка миниатюр с помощью add_image_size

23 янв. 2012 г., 05:19:44
Просмотры: 22.2K
Голосов: 1

Я хочу, чтобы миниатюры на определенной странице были точно 300px × 100px. В настоящее время изображения уменьшаются до достижения отметки 300 или 100 пикселей. Как мне обрезать изображение точно до размера 300 × 100 (желательно без искажения изображения).

// functions.php:
// Добавляем поддержку миниатюр, если функция существует
if ( function_exists( 'add_image_size' ) ) add_theme_support( 'post-thumbnails' );

// Добавляем различные размеры изображений
if ( function_exists( 'add_image_size' ) ) { 
    add_image_size( 'post-thumb', 620, 207, true );
    add_image_size( 'home-thumb', 220, 180, true );
    add_image_size( 'index-thumb', 300, 100, true );
}
// index.php:
// Выводим миниатюру, если она существует
if ( has_post_thumbnail()) the_post_thumbnail('index-thumb');
4
Комментарии

Изображения, которые уменьшаются, это те, которые были загружены до указания этих размеров? Или у вас также проблемы с новыми загрузками? Потому что параметр true фактически обрезает изображения без искажений.

Hameedullah Khan Hameedullah Khan
23 янв. 2012 г. 15:59:53

У меня установлено true, но изображение не обрезается до 300 на 100. Оно обрезается до 300 на X пикселей или до Y пикселей на 100. В зависимости от того, что наступит первым.

pope pope
23 янв. 2012 г. 22:57:04

Так работает обрезка в WordPress. Для точной обрезки 300x100 проверьте решение по ссылке: http://wpquestions.com/question/show/id/1098. ПРИМЕЧАНИЕ: Я сам это не тестировал.

Hameedullah Khan Hameedullah Khan
24 янв. 2012 г. 04:18:17

У меня были такие же проблемы, нашел это решение, и оно работает у меня - http://sumtips.com/2011/12/custom-image-sizes-in-wordpress.html

User User
11 окт. 2012 г. 18:10:49
Все ответы на вопрос 3
0

Обратитесь к документации Codex по функции add_image_size():

<?php add_image_size( $name, $width, $height, $crop ); ?>

Параметр $crop является ключевым:

(boolean) (опционально) Обрезать изображение или нет. False - режим мягкого пропорционального изменения размера; True - режим жесткого обрезания.

По умолчанию: false

То есть:

  • False (по умолчанию): box-resize - изменение размера изображения с сохранением пропорций (подгонка под ограничивающие размеры)
  • True: hard-crop - жесткое обрезание изображения точно до указанных размеров

Таким образом, ваш код должен работать:

// Добавляем поддержку темой
add_theme_support( 'post-thumbnails' );

// Регистрируем пользовательские размеры изображений
add_image_size( 'post-thumb', 620, 207, true );
add_image_size( 'home-thumb', 220, 180, true );
add_image_size( 'index-thumb', 300, 100, true );

Если вы обнаружили, что изображения не отображаются должным образом, проверьте следующее:

  • Для изображений, добавленных до реализации этих пользовательских размеров, вам потребуется перегенерировать миниатюры для этих изображений
  • Размеры изображений не будут созданы для изображений, которые не имеют хотя бы указанных размеров. Убедитесь, что ваши изображения имеют хотя бы размеры самого большого указанного жесткого обрезания. (Изображения с изменением размера с сохранением пропорций менее требовательны и должны быть лишь не меньше наименьшего из указанных размеров.)
15 нояб. 2012 г. 18:36:48
0

Ознакомьтесь с этим плагином

  • он создаёт неограниченное количество размеров изображений (обрезанных и нет)
  • добавляет размеры в поле выбора медиафайлов
  • добавляет CSS-фильтры и анимации
  • может управлять водяными знаками
21 мар. 2014 г. 10:36:32
5
-1

Попробуйте изменить параметр "true" на "false". Вы также можете удалить условные операторы "if" в functions.php, если они не нужны для других целей...

23 янв. 2012 г. 06:12:57
Комментарии

Параметр true фактически обрезает изображение. Если установить false, изображение не будет обрезано, а будет изменено в размере.

Hameedullah Khan Hameedullah Khan
23 янв. 2012 г. 16:00:58

Установка true или false дает мне одинаковый результат.

pope pope
23 янв. 2012 г. 17:27:02

Вы уверены, что ваши изображения действительно Больше, чем размеры, которые вы задали для миниатюр? И пробовали ли вы убрать условия "if"?

krembo99 krembo99
23 янв. 2012 г. 18:47:15

Я пробовал использовать изображения большего размера. Результат тот же. Удаление условий if приводит к ошибке.

pope pope
23 янв. 2012 г. 21:42:43

можешь показать ошибку?

krembo99 krembo99
24 янв. 2012 г. 15:37:22