2012-03-31 19 views
1

wordpressは一般的に画像を良好にサポートしています。私の質問があるPHP 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 

はそれを行うためにそこに方法は何ですか?どこでそれを追いかけることができますか? 誰かがそれを達成するためにUber-creativeの方法を考えることができますか? これらの画像サイズは多くの機能に登録されて使用されていますか?あなたはあなただけのテンプレートに次の操作を行い、その後、あなたのfunctions.phpファイルにadd_theme_support('post-thumbnails')を指定する必要がある場合に

答えて

1

あなたは、添付ファイルの小型化画像を取得するためにwp_get_attachment_image_src使用することができます。

$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... 
+0

おかげでリサイズされている場合にのみ、半分の画像にフィルターを使用しましたあなたの答え 。一番目 - それはテーマではなく、プラグインで使われることです。二番目 - このメソッドを使用する場合、アップロード時にサムが作成されませんか、間違っていますか? –

+0

プラグインでも 'wp_get_attachment_image_src'を呼び出すことができます。はい、サイズ変更されたイメージはメソッドが呼び出されたときに作成されますが、 'add_attachment'にフックして元のファイルをアップロードした直後に作成することができます。 –

+0

しかし、1000のオリジナルがあります - 各投稿は10または20を持つことができます... –

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; 
    } 
} 
関連する問題