PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPで画像のサイズを変更する方法|GDライブラリを使ったリサイズ手順を解説

PHPで画像のサイズを変更する方法

PHPで画像をリサイズするには、ImageMagickまたはGDライブラリの関数を使用します。特にGDの関数を利用した場合、デジタルカメラで撮影した大型の画像をサンプリング(縮小)する際に、画像ファイルのサイズそのものも軽減できるというメリットがあります。

以下のコードでは、GDライブラリを使って画像をリサイズする関数の実装例を紹介します。

画像リサイズ関数のコード例

function image_resize($file_name, $width, $height, $crop = FALSE) {
    list($wid, $ht) = getimagesize($file_name);
    $r = $wid / $ht;
    if ($crop) {
        if ($wid > $ht) {
            $wid = ceil($wid - ($width * abs($r - $width / $height)));
        } else {
            $ht = ceil($ht - ($ht * abs($r - $width / $height)));
        }
        $new_width = $width;
        $new_height = $height;
    } else {
        if ($width / $height > $r) {
            $new_width = $height * $r;
            $new_height = $height;
        } else {
            $new_height = $width / $r;
            $new_width = $width;
        }
    }
    $source = imagecreatefromjpeg($file_name);
    $dst = imagecreatetruecolor($new_width, $new_height);
    imagecopyresampled($dst, $source, 0, 0, 0, 0, $new_width, $new_height, $wid, $ht);
    return $dst;
}

$img_to_resize = image_resize('path-to-jpg-image', 250, 250);

コードの解説

この関数は、以下の引数を受け取ります。

  • $file_name:リサイズ対象の画像ファイルへのパス
  • $width:リサイズ後の幅(ピクセル)
  • $height:リサイズ後の高さ(ピクセル)
  • $crop:画像を切り抜き(クロップ)するかどうか。デフォルトはFALSE

まずgetimagesize()関数で元画像の幅と高さを取得し、アスペクト比(縦横比)を計算します。$cropがTRUEの場合は、指定サイズにぴったり収まるよう画像を切り抜き、FALSEの場合はアスペクト比を維持したまま、指定サイズ内に収まるようにリサイズされます。

その後、imagecreatefromjpeg()で元画像を読み込み、imagecreatetruecolor()でリサイズ後のサイズの空画像を作成し、imagecopyresampled()によって元画像を新しいサイズへ滑らかに再サンプリングしてコピーします。最後に、リサイズ済みの画像リソースを返します。

リサイズ画像をファイルに保存する

関数の戻り値は画像リソースなので、そのままブラウザへ出力するか、imagejpeg()を使ってファイルとして保存できます。

$img_to_resize = image_resize('images/photo.jpg', 250, 250);

// リサイズした画像をJPEGファイルとして保存(品質90)
imagejpeg($img_to_resize, 'images/photo_resized.jpg', 90);

なお、このコードはJPEG画像を対象としています。PNGやGIFなど他の形式を扱いたい場合は、imagecreatefrompng()imagecreatefromgif()など、形式に応じた関数に置き換えてください。

  1. iPhoneで画像のサイズを変更する方法|ショートカットと無料アプリ活用ガイド

    iPhoneの「写真」アプリは、単なる写真管理ツールではありません。かなり本格的な画像編集機能まで備えた便利なアプリです。ところが意外なことに、写真のサイズ変更(リサイズ)だけは標準機能として行えません。 ファイルサイズを小さくしたい場合や、Webサイトへのアップロード要件に合わせたい場合など、iPhoneで画像をリサイズするには、「ショートカット」アプリやサードパーティ製のリサイズアプリを利用する必要があります。 ショートカットを使って画像をリサイズする iPhoneの「ショートカット」アプリは、さまざまなタスクを自動化・実行できる強力なツールです。標準アプリにはない機能でも、ショ

  2. Windows PCで大量の画像を一括リサイズする方法

    Windows PCで大量の画像を一括リサイズする方法記事の概要:Windows用の一括画像リサイズツールを活用すれば、時間と手間を大幅に節約できます。本記事では、大量の画像を素早くリサイズする方法をご紹介します。アップロード先のプラットフォームによって求められる画像サイズは異なるため、用途に合わせて画像の寸法を調整する必要があります。通常の画像編集ソフトだけでは対応が難しい場面も多く、プロの写真家は写真管理ソフトを活用して大量の画像を効率的に扱っています。しかし、専門知識がない方でも安心して使える専用ツールが存在します。PCに一括画像リサイズツールを導入すれば、1枚ずつ画像を変換するという面