PHP画像処理中に、GDライブラリが提供するさまざまな機能を使用して、画像を読み取り、操作、生成します。 .gd2形式で画像を処理する場合、PHPは2つの非常に類似した関数を提供します: imageCreatefromgd2()とimageCreatefromgd2Part() 。一見すると、同様の名前があり、似たような機能がありますが、実際、目的とパフォーマンスには本質的な違いがあります。
ImageCreateFromgd2()は、 .gd2ファイル全体をロードするために使用される関数です。構文は次のとおりです。
$im = imagecreatefromgd2('https://m66.net/images/sample.gd2');
この関数は、 .gd2ファイル全体をデコードし、メモリにロードして画像リソースを生成します。この方法は、小さな画像を扱うときに直接的かつ効果的です。
.gd2ファイルが非常に大きい場合、 imageCreateefromgd2()は画像全体をメモリにロードし、メモリの消費と非効率性が高くなります。これは、画像データの一部のみが必要なシナリオでは非常に無駄に思えます。
上記の問題を解決するために、PHPはImageCreateeFromGd2Part()関数を提供し、 .gd2ファイルの画像領域の一部のみをロードできます。
$im = imagecreatefromgd2part('https://m66.net/images/sample.gd2', $srcX, $srcY, $width, $height);
パラメーター説明:
$ srcxおよび$ srcy :抽出される領域の開始座標。
$幅と$ height :抽出される画像領域のサイズ。
メモリ保存:必要な領域のみをロードします。
より速い応答:特に、画像のサムネイルまたはローカル画像がWebアプリケーションでオンデマンドでロードされるシーンに適しています。
大規模な画像処理に適しています: ImageCreateeFromgd2Part()は、高解像度または大規模な.gd2画像に直面している場合、より安全な選択です。
10000x10000の.gd2画像があり、200x200サムネイルを生成したいとします。
$full = imagecreatefromgd2('https://m66.net/images/large.gd2');
$thumb = imagecreatetruecolor(200, 200);
imagecopyresampled($thumb, $full, 0, 0, 0, 0, 200, 200, 10000, 10000);
メモリ圧力が高く、速度が遅いです。
$part = imagecreatefromgd2part('https://m66.net/images/large.gd2', 1000, 1000, 500, 500);
$thumb = imagecreatetruecolor(200, 200);
imagecopyresampled($thumb, $part, 0, 0, 0, 0, 200, 200, 500, 500);
より効率的で、特に画像の部分領域のみに適しています。
ImageCreatefromgd2()およびImageCreateFromgd2Part()は.gd2画像を読み取ることができますが、実際の開発では、ニーズに応じて選択する必要があります。小さな画像または全体の画像を扱っている場合は、 ImageCreateFromgd2()を引き続き使用できます。ただし、大きな画像に直面している場合、画像クリップを効率的に処理する必要がある場合、またはメモリに敏感な環境では、 ImageCreateFromgd2Part()が間違いなくより良い選択です。
高性能画像処理のコンテキストでは、効率とプログラムの安定性を向上させるために、従来の画像読み取り方法の代わりにImageCreateeFromGd2Part()を使用することをお勧めします。