eyecatch php

PHP

【PHP】正方形のサムネイル画像をGDを使って作る方法

2018/04/14

現在作成中のシステムの管理画面にてサムネイル画像が必要になったので、WordPressの様な正方形の画像をPHP(GD)で作成する方法を備忘録としてポストします。

正方形のサムネイル画像を作る!

(手順1)イメージリソースを取得

まずはイメージリソースを取得。
そこから元画像の横・縦ピクセルサイズを取得

imagecreatefromjpeg の仕様を見ると、「新しい画像をファイルあるいは URL から作成する」とあるので、$orgFileには、ローカルのファイルパスやURLが指定できるようです。

PHPマニュアルには以下のようにあります。

fopen wrappers が有効の場合、この関数のファイル名として URL を使用することができます。

PHPの設定に準拠するようですね。

imagesx() と imagesy() は、イメージリソースからそれぞれピクセルサイズを取得する関数です。
便利!

(手順2)一辺の長さを算出

次に、取得したピクセルサイズ比較して、短い方に合わせた一辺の長さを算出し、指定。
算数が全然できない人なので計算式が思いつかず、意外と苦戦してしまいました(汗)

(手順3)画像の出力

最後に画像を出力。例は .jpg の場合。

これでOK。
この画像が

長方形画像

こうなってくれます。

正方形サムネイル

ルーチン公開

と、いうことで、.jpg、.gif、.png に対応したものを作ったので公開。
もっと良い書き方があると思うので、参考程度に。

ちなみに以下のルーチンでは、透過gifをアップロードした場合に透過部が黒くなってしまうことは確認しています。
どうやって直すのかよく分かっていません(えー)

意外と簡単に出来るので、覚えておいて損はないかと思います。

-PHP
-, , ,