よもやまチョモランマ

アップロード時に画像をリサイズ

保育園サイトの画像が重い。
表示速度は遅くなるわ、サーバー容量はくうわで、もう大変。
スマホで撮った写真って、そのままだと3000~5000px、2MBとかあるんですよ。
それが今や2000枚以上。

メディアの編集でサイズ変更はできるけど、なにやら長ったらしい暗号の付加されたファイルがディレクトリに増え、記事にはそれが紐づけされてしまった。
uploadsの中は元画像だけにしたいのに。

この元画像をひとつずつリサイズしてアップしなおして記事に紐づけしなおすしかないのか・・・orz

最初から、元画像が適正なサイズでアップロードされていれば、何のことはないのだ。
というわけで調べたところ、functionに書いておくだけでアップ時にリサイズしてくれる魔法の呪文を見つけました。
【参考】WordPressで画像アップロードの自動生成を停止・リサイズして容量を減らす

今後「スマホ写真をアップするWP」を作るときは、真っ先にこのコード入れておこうと思います。

//アップロードの際に画像をリサイズする(高さは未指定)
function otocon_resize_at_upload( $file ) {
	if ( $file['type'] == 'image/jpeg' OR $file['type'] == 'image/gif' OR $file['type'] == 'image/png') {
		$w = 1000;
		$h = 0;
		$image = wp_get_image_editor( $file['file'] );
		if ( ! is_wp_error( $image ) ){
			$size = getimagesize( $file['file'] );
			if ( $size[0] > $w || $size[1] > $h ){
				$image->resize( $w, $h, false );
				$final_image = $image->save( $file['file'] );
			}
		}
	}
	return $file;
}
add_action( 'wp_handle_upload', 'otocon_resize_at_upload' );

それにしても、ガッコーもさぁ、せっかく現場人間に教えてもらって一緒にこのサイト作ってたんだからさ、こういうことを教えてほしかったよな~。