PHP Wordpress динамические пользовательские размеры изображений - PullRequest
1 голос
/ 31 марта 2012

WordPress имеет хорошую поддержку изображений в целом.

, чтобы получить новые размеры изображения, можно просто добавить некоторые функции, такие как:

add_theme_support( 'post-thumbnails' ); //thumnails
set_post_thumbnail_size( 200, 120, true ); // Normal post thumbnails
add_image_size( 'single-post-thumbnail', 400, 300,False ); // single-post-test
add_image_size( 'tooltip', 100, 100, true ); // Tooltips thumbnail size
/// and so on and so on 

мой вопрос:

Как кто-то может заставить эти функции работать динамически, а это означает, что эти размеры будут рассчитываться при загрузке?

например - Если я загружаю изображение размером 3000x4000 px - я бы хотел, чтобы размеры моего изображения были:

 add_image_size( 'half', 50%, 350%, False ); // Half the original
 add_image_size( 'third', 30%, 30%, true ); // One Third the original

Есть ли способ сделать это? где я могу зацепиться за это? Эти размеры изображения используются во многих функциях - Может кто-нибудь придумать Uber-креативный способ достижения этого?

Ответы [ 2 ]

2 голосов
/ 23 марта 2014

Или вы можете использовать фильтр image_resize_dimensions.

Я установил новое изображение со странной шириной и высотой, как это

add_image_size('half', 101, 102);

Затем применил фильтр к половине изображения только при изменении размера половины изображения

add_filter( 'image_resize_dimensions', 'half_image_resize_dimensions', 10, 6 );

function half_image_resize_dimensions( $payload, $orig_w, $orig_h, $dest_w, $dest_h, $crop ){
    if($dest_w === 101){ //if half image size
        $width = $orig_w/2;
        $height = $orig_h/2;
        return array( 0, 0, 0, 0, $width, $height, $orig_w, $orig_h );
    } else { //do not use the filter
        return $payload;
    }
}
1 голос
/ 31 марта 2012

Вы можете использовать wp_get_attachment_image_src, чтобы получить уменьшенные изображения вложения, в вашем случае вам нужно только указать add_theme_support( 'post-thumbnails' ) в вашем файле functions.php, а затем в вашем шаблоне сделать следующее:

$id = get_post_thumbnail_id($post->ID)
$orig = wp_get_attachment_image_src($id)
$half = wp_get_attachment_image_src($id, array($orig[1] / 2, orig[2] / 2))
$third = wp_get_attachment_image_src($id, array($orig[1] / 3, orig[2] / 3))
etc...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...