Tutorial
この記事の読了時間:約3分52秒
愛しのWordPressで画像アップロードした際に、所定のサイズに切り抜き(リサイズじゃなくて)する時、あるじゃないですか。
でもアレって、画像の「天地中央」で切り抜くじゃないですか。
そーすっと例えば人物のバストアップ画像なんかの場合、顔の半分が見切れちゃうじゃないですか。
なんかヤじゃないですか。
今回のエントリーではその問題を解消すべく、画像切り抜きの基準点を「中心」から「左上」に変える方法をご紹介しようじゃないですか!
そんなコトよりこの文体、ちょーウザいじゃないですか!
調べてみると、結構多いのが「コアファイルをイジる方法」なんですが、コレやっちゃうとWordPress本体のアップデート時に毎回書き直さなくちゃいけなくて、保守性に著しく欠けるという欠点が。
それはやだなーと別の方法を模索したところ、海外の記事でドンピシャの方法を発見!
詳細は上記サイトでご確認頂くとして、要は画像切り抜きを行うWordPress関数 image_resize_dimensions() を functions.php から上書きしちゃうって方法。
これならテーマファイルだけで完結するので、本体アップデートも影響なし!
というワケで下記にその記述を置いときますので、お使いの functions.php にコピペって下さいまし☆
function my_awesome_image_resize_dimensions( $payload, $orig_w, $orig_h, $dest_w, $dest_h, $crop ){ if( false ) return $payload; if ( $crop ) { $aspect_ratio = $orig_w / $orig_h; $new_w = min($dest_w, $orig_w); $new_h = min($dest_h, $orig_h); if ( !$new_w ) $new_w = intval($new_h * $aspect_ratio); if ( !$new_h ) $new_h = intval($new_w / $aspect_ratio); $size_ratio = max($new_w / $orig_w, $new_h / $orig_h); $crop_w = round($new_w / $size_ratio); $crop_h = round($new_h / $size_ratio); $s_x = 0; $s_y = 0; } else { $crop_w = $orig_w; $crop_h = $orig_h; $s_x = 0; $s_y = 0; list( $new_w, $new_h ) = wp_constrain_dimensions( $orig_w, $orig_h, $dest_w, $dest_h ); } if ( $new_w >= $orig_w && $new_h >= $orig_h ) return false; return array( 0, 0, (int) $s_x, (int) $s_y, (int) $new_w, (int) $new_h, (int) $crop_w, (int) $crop_h ); } add_filter( 'image_resize_dimensions', 'my_awesome_image_resize_dimensions', 10, 6 );
これで切り抜きの基準点が「中心」から「左上」になって、かわいいモデルさんの顔半分が見切れるなんて惨事から開放されることでしょう!
何故ならば!いままさに!WordPressを使った!新しいウェブサービスを!作っているのです!
先日の「現在作成中の某ウェブサービスで遊んでくれる方、募集します!」って記事の反応がすこぶる悪くてw だーれも手を上げてくれないので、ヤケになって公開翌日から着手してもう出来て、ドメインまで取りました。
あっちだって面白いサービスのはずなのに!くそー!!くそーーー!!!!
関連する記事
同じカテゴリーの記事
smkn より:
2013/04/16 6:25 PM
>オカ さん
これマジ厄介ですよねー!なんでデフォルトで選べないのか。。。
とにかく、お役に立てて何よりですっ☆
オカ より:
2013/04/15 11:52 PM
初めまして。
ずっとWordPressのアイキャッチのトリミング位置を変える方法無いかなと探していたのですが、この記事がまさに求めていたものでした。
この方法で無事トリミング位置を変更することが出来ました!
嬉しさのあまりコメントさせていただきました。本当にありがとうございます。