画像処理

【PHP】ローカルやWeb(HTTP)上の画像から縦横のサイズを取得する

更新日:2023/02/06

PHPでローカルやWeb上の画像ファイルから、サイズを取得する方法をお伝えします。

 

getimagesize()を使う

ローカルの画像ファイルやネット上の画像サイズを取得したい時は、getimagesize()を呼び出すだけです。

ローカル画像のサイズを取得するときは、次のように記述します。

ローカルの画像ファイルのサイズ取得

$image_path = 'c:\test.jpg';
$imgsize = @getimagesize($imgpath);
if( $imgsize===false ){
    echo 'サイズ取得失敗';
}else{
    echo '縦(高さ):' . $imgsize[1] . ' 横(幅):' . $imgsize[0];
}

ネット上の画像は、次のようにURLを指定します。

URLからサイズ取得

$image_path = 'https://xxxx.xx/test.jpg';
$imgsize = @getimagesize($imgpath);
if( $imgsize===false ){
    echo 'サイズ取得失敗';
}else{
    echo '縦(高さ):' . $imgsize[1] . ' 横(幅):' . $imgsize[0];
}

画像が存在していなかったり取得したデータが画像ではない時は、もしくは画像の仕様上の問題でサイズを特定できない時はfalseが返ります。
この時WarningやNoticeが発生することがあるので、上記のコードはエラー制御演算子(@)を使用しています。

サイズを取得できた時は、次のような配列を返します。

array (size=6)
  0 => int 600  // 幅
  1 => int 300  // 高さ
  2 => int 3    // 定数IMAGETYPE_xxx の値
  3 => string 'width="600" height="253"' // imgタグで使用可能な形式
  'bits' => int 8  // 画像のビット数
  'mime' => string 'image/png' (length=9)

この他に、'channels'が存在することがあります。

定数IMAGETYPE_xxxは、定義済み定数 | www.php.netでリストされている画像タイプ定数です。

次のように、画像のタイプを判定するために使用します。

if( $imgsize[2] === IMAGETYPE_PNG ) { // 画像タイプがPNG

} 

 

ブラウザでネット上の画像サイズを確認するコード例

ネット上の画像のサイズを確認できるWebページのコードを例として紹介しておきます。

<?php

function error_msg($msg){
    return '<p style="color:red">'.$msg.'</p>';
}

$url = '';
$result = '';
if( isset($_POST['filename']) ){
    $url = $_POST['filename'];
    if( !filter_var($url, FILTER_VALIDATE_URL) ){
        $result =  error_msg('URLが不正です');
    }else{
        $imgsize = @getimagesize($url);
        $result =  $imgsize === false ? error_msg('サイズを取得できませんでした')
                : "<p>幅:{$imgsize[0]} 高さ:{$imgsize[1]}<br>"
                    . 'タグ:' .htmlspecialchars("<img src=\"{$url}\" {$imgsize[3]} >", ENT_QUOTES|ENT_HTML5)
                    . '</p>'; 
    }
} 
?>
<form action="imagesize.php" method="post">
<p><label>URL:<input name="filename" type="text" size="100" value="<?= htmlspecialchars( $url , ENT_QUOTES|ENT_HTML5) ?>"></label></p>
<p><?= $result ?></p>
<p><button type="submit">サイズ確認</button>
</form>

URLを入力して確認ボタンを押すと、画像のサイズとimgタグが表示されます。

実行結果

実際のところは、動的に画像サイズを取得するならブラウザ上のみで処理した方がいいですね。
その分、サーバーの負荷を減らすことができます。

ということで、JavaScriptによるWeb画像のサイズ取得コードを作成しました。
次の記事で紹介しているので、参考にしてみてください。

更新日:2023/02/06

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。