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

PHPのimagecreatefromjpeg()関数でJPEGファイルから新しい画像を作成する方法

imagecreatefromjpeg()は、PHPに組み込まれている関数の一つで、JPEGファイルから新しい画像を生成するために使用されます。指定したファイル名から取得した画像を表す画像リソース識別子(イメージID)を返します。

この関数は、GDライブラリが有効になっている環境で動作し、JPEG画像の読み込み、編集、再保存など、さまざまな画像処理の起点としてよく利用されます。

構文

resource imagecreatefromjpeg(string $filename)

パラメータ

imagecreatefromjpeg()が受け取るパラメータは$filenameの1つだけです。ここには、読み込むJPEG画像のファイル名またはファイルへのパスを指定します。

戻り値

処理が成功した場合は画像リソース識別子を返します。失敗した場合にはエラー(false)を返します。存在しないファイルや破損したJPEGファイルを指定すると失敗するため、実際のコードではエラーハンドリングを行うことが推奨されます。

例1:ローカルのJPEG画像を読み込んで表示する

<?php
   // ローカルドライブ/ファイルから画像を読み込む
   $img = imagecreatefromjpeg('C:\xampp\htdocs\test\1.jpeg');
   
   // 読み込んだ画像をブラウザに表示する
   header('Content-type: image/jpg');
   
   imagejpeg($img);
   
   imagedestroy($img);
?>

出力結果

PHPのimagecreatefromjpeg()関数でJPEGファイルから新しい画像を作成する方法

この例では、imagecreatefromjpeg()でローカルのJPEGファイルを読み込み、header()関数でコンテンツタイプを「image/jpg」に設定してから、imagejpeg()を使ってブラウザ上に画像を出力しています。最後にimagedestroy()でメモリ上の画像リソースを解放しています。

例2:JPEG画像を読み込んで反転させて保存する

<?php
   // ローカルドライブ/ファイルからJPEG画像を読み込む
   $img = imagecreatefromjpeg('C:\xampp\htdocs\test\1(a).jpeg');
   
   // 画像を反転させる
   imageflip($img, 1);
   
   // 指定したパスに画像を保存する
   imagejpeg($img,'C:\xampp\htdocs\test\1(b).png');
   imagedestroy($img);
?>

入力画像

PHPのimagecreatefromjpeg()関数でJPEGファイルから新しい画像を作成する方法

出力画像

PHPのimagecreatefromjpeg()関数でJPEGファイルから新しい画像を作成する方法

解説:例2では、まずimagecreatefromjpeg()関数を使ってローカルパスからJPEG画像を読み込んでいます。その後、imageflip()関数を使用して画像を上下反転させ、imagejpeg()で指定したパスに新しい画像として保存しています。

例3:JPEG画像の読み込み時のエラー処理

<?php
   function LoadJpeg($imgname) {
      /* 読み込みを試みる */
      $im = @imagecreatefromjpeg($imgname);
     
      /* 失敗したかどうかを確認 */
      if(!$im) {
         /* 黒い画像を作成 */
         $im = imagecreatetruecolor(700, 300);
         $bgc = imagecolorallocate($im, 0, 0, 255);
         $tc = imagecolorallocate($im, 255,255, 255);
         imagefilledrectangle($im, 0, 0, 700, 300, $bgc);
         
         /* エラーメッセージを出力 */
         imagestring($im, 20, 80, 80, 'Error loading ' . $imgname, $tc);
      }
      return $im;
   }
   header('Content-Type: image/jpeg');
   $img = LoadJpeg('bogus.image');
   imagejpeg($img);
   imagedestroy($img);
?>

出力結果

PHPのimagecreatefromjpeg()関数でJPEGファイルから新しい画像を作成する方法

解説:例3では、@演算子を使ってエラー出力を抑制しながら画像の読み込みを試みています。読み込みに失敗した場合は、imagecreatetruecolor()で代替画像を生成し、imagestring()でエラーメッセージを描画して返します。これにより、存在しないファイルや破損したJPEGファイルを扱った際にも、スクリプトが突然中断されることなく、ユーザーに分かりやすい形でエラーを通知できます。

まとめ

imagecreatefromjpeg()は、JPEG画像をPHPで扱うための基本的な関数です。画像の読み込みだけでなく、imageflip()やimagejpeg()などの他のGDライブラリ関数と組み合わせることで、画像の加工や保存など幅広い処理を実現できます。実運用では、ファイルの存在確認やエラー処理を適切に行うことで、より堅牢なコードになります。

  1. PHPのimagecreatefromwbmp()関数でWBMPファイルやURLから新しい画像を作成する方法

    PHPには、WBMPファイルまたはURLから新しい画像を作成するための組み込み関数 imagecreatefromwbmp() が用意されています。この関数は、指定されたファイル名から取得した画像を表す画像リソース識別子を返します。WBMPファイルから画像を読み込んだ後に編集したい場合などに活用できる便利な関数です。また、imagewbmp() 関数を使えば、画像をWBMP形式へ変換して保存することも可能です。 構文 resource imagecreatefromwbmp(string $filename) パラメータ imagecreatefromwbmp() が受け取るパラメータは $f

  2. PHPのimagecreatefrompng()関数でPNGファイルやURLから新しい画像を作成する方法

    PHPのimagecreatefrompng()は、標準で用意されている組み込み関数のひとつで、PNGファイルまたはURLから新しい画像を作成します。指定されたファイル名から取得した画像を表す「画像リソース識別子」を返します。なお、この関数を利用するには、PHP環境にGDライブラリが組み込まれている必要があります。構文resource imagecreatefrompng(string $filename)パラメータimagecreatefrompng()が受け取るパラメータは$filenameのひとつだけです。この引数には、読み込みたいPNG画像のファイル名、または画像へのパス(URL)を指