Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】image_type_to_extension()関数の使い方

image_type_to_extension関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

image_type_to_extension関数は、指定された画像タイプに対応するファイル拡張子を取得する関数です。PHPで画像を扱う際、その画像がGIF、JPEG、PNGといったどの形式であるかを知る必要が生じることがあります。この関数は、getimagesize()関数などが返すIMAGETYPE_XXX形式の定数で表される画像タイプ(例えばIMAGETYPE_GIFIMAGETYPE_JPEG)を受け取り、それに対応するファイル拡張子を文字列として返します。

例えば、IMAGETYPE_GIFを指定すれば.gifIMAGETYPE_PNGを指定すれば.pngといった文字列が得られます。これにより、アップロードされた画像のファイル名を生成する際や、画像ファイルのMIMEタイプを推測する際に役立てることができます。

この関数は、第2引数にオプションでtrueまたはfalseを指定できます。デフォルトはtrueで、返される拡張子には先頭にピリオド(.)が含まれます。falseを指定すると、ピリオドなしの拡張子(例: gifjpeg)が返されます。

もし、サポートされていない画像タイプが指定された場合や、無効な画像タイプが渡された場合は、falseを返します。この挙動を利用することで、プログラムは未知の画像形式に対して適切に対応することができます。画像処理を伴うアプリケーション開発において、ファイルの取り扱いをより簡潔かつ正確に行うために重要な役割を果たす関数です。

構文(syntax)

1$extension = image_type_to_extension(IMAGETYPE_JPEG, false);

引数(parameters)

int $image_type, bool $include_dot = true

  • int $image_type: 画像の種類を示す整数定数 (例: IMAGETYPE_JPEG, IMAGETYPE_PNG)
  • bool $include_dot = true: 拡張子の先頭にドット (.) を含めるかどうかを指定する真偽値。true の場合は含め、false の場合は含めません。

戻り値(return)

string|false

指定された画像タイプ定数に対応するファイル拡張子を文字列で返します。対応する拡張子がない場合は false を返します。

サンプルコード

PHP画像タイプを拡張子に変換する

1<?php
2
3/**
4 * image_type_to_extension 関数の使用例
5 *
6 * このスクリプトは、さまざまな画像タイプ定数を対応するファイル拡張子に変換する方法を示します。
7 * image_type_to_extension 関数は、画像の種類を示す整数値(例: IMAGETYPE_JPEG)を受け取り、
8 * その画像の一般的なファイル拡張子(例: ".jpeg" または "jpeg")を返します。
9 * 未知の画像タイプの場合や、対応する拡張子がない場合は false を返します。
10 */
11
12// さまざまな画像タイプ定数(PHPの組み込み定数)を定義
13// これらは通常、getimagesize() 関数などから取得されます。
14$imageTypeGif = IMAGETYPE_GIF;
15$imageTypeJpeg = IMAGETYPE_JPEG;
16$imageTypePng = IMAGETYPE_PNG;
17$imageTypeWebp = IMAGETYPE_WEBP; // PHP 7.1+ で追加
18$imageTypeBmp = IMAGETYPE_BMP;   // PHP 7.2+ で追加
19$imageTypeUnknown = 9999;        // 存在しない画像タイプをシミュレート
20
21echo "--- ドット(.)を含む拡張子(デフォルト動作)---\n";
22
23// 例1: ドット(.)を含む拡張子を取得 (第2引数を省略、または true を指定)
24$extGif = image_type_to_extension($imageTypeGif);
25echo "GIF画像タイプ ({$imageTypeGif}) の拡張子: " . ($extGif !== false ? $extGif : '不明') . "\n";
26
27$extJpeg = image_type_to_extension($imageTypeJpeg);
28echo "JPEG画像タイプ ({$imageTypeJpeg}) の拡張子: " . ($extJpeg !== false ? $extJpeg : '不明') . "\n";
29
30$extPng = image_type_to_extension($imageTypePng);
31echo "PNG画像タイプ ({$imageTypePng}) の拡張子: " . ($extPng !== false ? $extPng : '不明') . "\n";
32
33$extWebp = image_type_to_extension($imageTypeWebp);
34echo "WEBP画像タイプ ({$imageTypeWebp}) の拡張子: " . ($extWebp !== false ? $extWebp : '不明') . "\n";
35
36// 未知のタイプの場合、false が返されることを確認
37$extUnknown = image_type_to_extension($imageTypeUnknown);
38echo "未知の画像タイプ ({$imageTypeUnknown}) の拡張子: " . ($extUnknown !== false ? $extUnknown : '不明') . "\n";
39
40echo "\n--- ドット(.)を含まない拡張子 ---\n";
41
42// 例2: ドット(.)を含まない拡張子を取得 (第2引数に false を指定)
43$extJpegNoDot = image_type_to_extension($imageTypeJpeg, false);
44echo "JPEG画像タイプ ({$imageTypeJpeg}) の拡張子 (ドットなし): " . ($extJpegNoDot !== false ? $extJpegNoDot : '不明') . "\n";
45
46$extBmpNoDot = image_type_to_extension($imageTypeBmp, false);
47echo "BMP画像タイプ ({$imageTypeBmp}) の拡張子 (ドットなし): " . ($extBmpNoDot !== false ? $extBmpNoDot : '不明') . "\n";
48
49?>

PHPのimage_type_to_extension関数は、画像の形式を示す整数値から、その形式に対応するファイル拡張子を取得するために使用します。例えば、JPEG画像を表す値を受け取ると、「.jpeg」や「jpeg」といった文字列を返します。

この関数は2つの引数を取ります。最初の引数$image_typeには、IMAGETYPE_GIFIMAGETYPE_JPEGといったPHPが提供する画像タイプ定数を整数値で渡します。これらの値は、通常getimagesize()関数などから取得されます。

2番目の引数$include_dotはオプションで、デフォルトはtrueです。この引数にtrueを指定するか省略すると、返される拡張子には「.」(ドット)が含まれます(例: ".png")。falseを指定すると、ドットを含まない拡張子が返されます(例: "png")。

関数が成功すると、対応するファイル拡張子を示す文字列が返されます。もし指定された画像タイプが認識できない場合や、対応する拡張子が存在しない場合は、falseが返されます。サンプルコードでは、JPEGやPNGなどの一般的な画像タイプをドットあり・なしの両方で変換する例や、未知の画像タイプがfalseを返すケースが示されており、この関数の基本的な使い方を理解するのに役立ちます。

この関数は、getimagesize()関数などから取得できるIMAGETYPE_XXX定数といった画像タイプを表す整数値を、ファイル拡張子に変換します。戻り値は成功すると拡張子の文字列ですが、認識できない画像タイプの場合やエラー時にはfalseを返します。そのため、戻り値がfalseでないか必ず確認し、サンプルコードのように適切に処理を行うようにしてください。第2引数にfalseを指定すると、拡張子の先頭のドット(.)を含まない文字列が取得可能ですので、必要に応じて使い分けましょう。この関数を利用するにはPHPにGD拡張機能がインストールされ、有効になっている必要があります。また、対応する画像タイプ定数はPHPのバージョンによって異なる場合がある点にも留意してください。

PHPで画像タイプから拡張子を取得する

1<?php
2
3/**
4 * image_type_to_extension 関数の使用例を示します。
5 *
6 * この関数は、指定された画像タイプに対応するファイル拡張子を返します。
7 * システムエンジニアを目指す初心者向けに、IMAGETYPE_JPEG を例に簡潔に示します。
8 */
9function demonstrateImageTypeToExtension(): void
10{
11    // IMAGETYPE_JPEG 定数は、JPEG画像のタイプを表します。
12    // これはPHPが認識する標準的な画像タイプの一つです。
13    $jpegType = IMAGETYPE_JPEG;
14
15    // 1. デフォルト(ドットを含む)で拡張子を取得する例
16    // 第二引数 $include_dot はデフォルトで true なので、明示しなくてもドットが含まれます。
17    $extensionWithDot = image_type_to_extension($jpegType);
18
19    if ($extensionWithDot !== false) {
20        echo "JPEG画像の拡張子(ドットあり、デフォルト): " . $extensionWithDot . PHP_EOL; // 例: ".jpeg"
21    } else {
22        echo "JPEG画像の拡張子の取得に失敗しました(ドットあり)。" . PHP_EOL;
23    }
24
25    // 2. ドットを含まない拡張子を取得する例
26    // 第二引数を false に設定することで、拡張子からドットを除外できます。
27    $extensionWithoutDot = image_type_to_extension($jpegType, false);
28
29    if ($extensionWithoutDot !== false) {
30        echo "JPEG画像の拡張子(ドットなし): " . $extensionWithoutDot . PHP_EOL; // 例: "jpeg"
31    } else {
32        echo "JPEG画像の拡張子の取得に失敗しました(ドットなし)。" . PHP_EOL;
33    }
34}
35
36// 上記で定義した関数を実行します。
37demonstrateImageTypeToExtension();
38

image_type_to_extension関数は、PHP 8で提供される機能の一つで、指定された画像タイプに対応するファイル拡張子を取得するために使用されます。Webアプリケーションなどで、アップロードされた画像の種類を判別し、適切なファイル名を生成する際などに役立ちます。

第一引数 $image_type には、画像のタイプを数値で指定します。例えば、JPEG画像の場合は IMAGETYPE_JPEG 定数を使用します。これはPHPが認識する標準的な画像タイプの一つです。

第二引数 $include_dot はオプションのブール値で、デフォルトは true です。true の場合、戻り値の拡張子には先頭にドット(.)が含まれます(例: ".jpeg")。この引数を false に設定すると、ドットなしの拡張子(例: "jpeg")が返されます。

関数が成功すると、対応するファイル拡張子が文字列として返されますが、認識できない画像タイプが指定された場合やエラーが発生した場合は、false が返されます。サンプルコードでは、IMAGETYPE_JPEG を用いて、ドットを含む拡張子(デフォルト)と、ドットを含まない拡張子をそれぞれ取得し、出力しています。これにより、JPEG画像に対して「.jpeg」と「jpeg」という結果が得られることを確認できます。

image_type_to_extension関数では、戻り値がstringまたはfalseとなるため、必ずif ($extension !== false)のように戻り値をチェックし、エラー発生時の処理を記述してください。第一引数には、サンプルコードのIMAGETYPE_JPEGのように、PHPが定義する画像タイプ定数を渡します。これは、getimagesize()関数などで取得できる画像タイプと連携して利用することが一般的です。第二引数をfalseに設定することで、拡張子の前のドット(.)を除外できますが、デフォルトはドットが含まれます。この関数を利用するには、PHPのGD拡張がサーバーにインストールされ、有効になっている必要があります。

関連コンテンツ

関連プログラミング言語