画像処理の実際の開発では、トリミングは一般的で必要な操作です。バックエンド開発の重要な言語として、PHPは複数の作物関連機能も提供します。最も一般的に混乱するのは、 ImageGetClip()とImageCrop()です。この記事では、これら2つの機能の使用、機能的な違い、適用可能なシナリオを徹底的に比較して、開発者が特定のニーズに基づいて適切な画像トリミング方法を選択できるようにします。
ImageCrop()は、PHPによって提供される標準画像トリミング機能であり、PHP 5.5以降導入されました。その基本的な目的は、特定の画像リソースを指定された長方形の領域に新しい画像にトリミットすることです。
関数定義:
resource imagecrop(resource $image, array $rect)
パラメーター説明:
$画像:元の画像リソース
$ rect : x 、 y 、幅、高さを含む作物エリアを定義する配列
サンプルコード:
$src = imagecreatefromjpeg('https://gitbox.net/images/sample.jpg');
$crop = imagecrop($src, ['x' => 100, 'y' => 50, 'width' => 200, 'height' => 100]);
if ($crop !== FALSE) {
imagejpeg($crop, 'cropped.jpg');
}
ImageGetClip()は、参照が少ない関数です。実際には、画像コンテンツを「トリミング」するために使用されませんが、現在の画像リソースのクリッピング長方形を取得するために使用されます。このクリッピング領域は、画像描画操作の範囲を制限するために使用され、描画コンテキストの一部です。
関数定義:
array imagegetclip(resource $im)
サンプルコード:
$im = imagecreatefrompng('https://gitbox.net/images/example.png');
$clip = imagegetclip($im);
print_r($clip);
出力は次のとおりです。
Array
(
[x] => 0
[y] => 0
[width] => 400
[height] => 300
)
これは、現在の画像の描画制限領域が(0,0) - (400,300)であることを示しています。
関数 | 画像学 | ImageGetClip |
---|---|---|
使用 | 実際に画像領域をトリミングして、新しい画像リソースを生成します | 現在の図面制限領域を取得します(画像コンテンツの変更はありません) |
画像コンテンツを変更するかどうか | はい | いいえ |
新しい画像を生成するかどうか | はい | いいえ |
導入バージョン | PHP 5.5 | PHP 5.6 |
実用的な運用使用 | 画像サムネイル生成、ユーザーアバターのトリミングなど。 | 描画前のコンテキスト設定(ImageClipと組み合わせて) |
多くの開発者は、ImageGetClip()が初心者であるときにImageCrop()のような画像をトリミングできると誤って考えています。実際、これは間違った理解です。 ImageGetClip()は、現在の画像リソースの描画制限領域を設定および取得するために使用され、実際の画像コンテンツを変更しません。
要件が「作物と画像の一部を保存」である場合は、ためらうことなくimagecrop()を使用してください。グラフィックコンテキストで作業している場合、またはグラフィックスローディングエリアを制御する必要がある場合は、 ImageGetClip()の使用を検討する必要があります。
一般に、 ImageCrop()は画像の一部を処理および保存するために使用される標準的な作物機能であり、 ImageGetClip()は画像描画コンテキストの状態情報を取得するためにのみ使用されます。それらの使用の違いを理解すると、開発プロセスの混乱やエラーを回避でき、PHPの画像処理機能をより効率的に使用することもできます。