PHP Wordpress动态自定义图像大小

时间:2012-03-31 01:57:43

标签: php wordpress image-size

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像素 - 我希望我的图片尺寸为:

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

有办法吗?我可以在哪里挂钩? 这些图像尺寸在许多功能中使用 - 有人会想到一种超级创造性的方式来实现这一目标吗?

2 个答案:

答案 0 :(得分:2)

或者您可以使用过滤器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 :(得分:1)

您可以使用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...