ホームページ制作のためになるTopics

WordPressで画像トリミングの基準点を 上 中央に

WordPressはで画像などをアップロードすると、アイキャッチや、カスタムサイズで設定したサイズにトリミングされる機能が備わっています。
同じ画像を複数箇所に表示させたい時、サイズが異なる場合があると思います。
そんな時それぞれに別の画像をアップするのは相当面倒ですよね。

そんな時に覚えておくと便利なのが、トリミングの基準点を変更するカスタマイズです。
「function.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 = ($orig_w - $crop_w) / 2;
		$s_y = 0;
	} else {
		$crop_w = $orig_w;
		$crop_h = $orig_h;

		$s_x = ($orig_w - $crop_w) / 2;
		$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 );

他の位置を基準点にする場合

「$s_x = 0;」と「$s_y = 0;」の値を書き換えることで、基準点を変更することができます。

・左上基準

$s_x = 0;
$s_y = 0;

・右上基準

$s_x = $orig_w;
$s_y = 0;

・左下基準

$s_x = 0;
$s_y = $orig_h;

・右下基準

$s_x = $orig_w;
$s_y = $orig_h;

必要に応じて、使い分けましょう。

*「function.php」は、必ずバックアップを取ってから作業して下さいね。

その他のTopics