PHPアプリケーション向けの画像処理機能

王林
リリース: 2023-06-20 10:26:01
オリジナル
1664 人が閲覧しました

PHP は強力な Web 開発言語として、当然ながらさまざまな実用的なアプリケーション機能を備えています。その中でも画像を加工する機能もその一つです。 Web開発では画像処理が避けられず、単純な画像の切り取りや拡大縮小から、複雑な特殊効果やフィルターなどの画像処理機能が必要となります。この記事では、PHP でよく使用される画像処理関数をいくつか紹介します。

1. 画像タイプとデータ表現

PHP では、一般的な画像タイプには JPEG、GIF、PNG などが含まれます。画像の種類が異なれば、データ構造も異なります。たとえば、JPEG 画像のデータは DCT 変換の係数に基づいていますが、PNG 画像のデータはピクセルのカラー値に基づいています。 PHP では、主に GD2 および Imagick 拡張機能を含む、さまざまなタイプの画像を解析および処理するために、さまざまな拡張ライブラリを使用する必要があります。

GD2 を使用するか Imagick を使用するかにかかわらず、処理のために画像データをメモリにロードする必要があります。したがって、画像処理機能を使用する場合は、まず画像データを対応するデータ型に変換する必要があります。 GD2 を例に挙げると、一般的な画像データのロード方法は次のとおりです。

//加载JPEG图片
$image = imagecreatefromjpeg('image.jpg');
//加载PNG图片
$image = imagecreatefrompng('image.png');
//加载GIF图片
$image = imagecreatefromgif('image.gif');
ログイン後にコピー

Imagick を使用する場合、画像データは Imagick オブジェクトを介してロードおよび処理される必要があります。例:

//实例化Imagick对象并加载图片
$im = new Imagick('image.jpg');
//调整图片大小
$im->resizeImage(320, 240, Imagick::FILTER_LANCZOS, 1);
//输出图片
header('Content-Type: image/jpeg');
echo $im;
ログイン後にコピー

2. 基本操作

  1. 画像サイズの調整

画像のサイズ変更は、縮小でも拡大でも一般的な画像処理要件です。 。 GD2 では、imagecopyresampled() 関数を使用して画像のサイズ変更を行うことができます。元の画像を指定されたサイズに合わせて拡大縮小し、調整した画像データを出力する機能です。例:

//打开原始图片
$src = imagecreatefromjpeg('image.jpg');
//设置目标图片尺寸
$dst_width = 320;//目标宽度
$dst_height = 240;//目标高度
//创建目标图片
$dst = imagecreatetruecolor($dst_width, $dst_height);
//缩放图片
imagecopyresampled($dst, $src, 0, 0, 0, 0, $dst_width, $dst_height, imagesx($src), imagesy($src));
//输出图片
header('Content-Type: image/jpeg');
imagejpeg($dst);
//释放内存
imagedestroy($src);
imagedestroy($dst);
ログイン後にコピー

Imagick では、画像のサイズ変更は、resizeImage() メソッドによって実現されます。例:

//打开原始图片
$im = new Imagick('image.jpg');
//设置目标图片尺寸
$im->resizeImage(320, 240, Imagick::FILTER_LANCZOS, 1);
//输出图片
header('Content-Type: image/jpeg');
echo $im;
ログイン後にコピー
  1. Picture Cut

Picture Cut は、通常、画像のトリミングとインターセプトに使用されます。 GD2 では、imagecopy() 関数を使用して画像の切り取りを行うことができます。元画像の指定範囲のピクセルを対象画像にコピーし、切り出した画像データを出力する機能です。例:

//打开原始图片
$src = imagecreatefromjpeg('image.jpg');
//设置目标图片尺寸
$dst_width = 320;//目标宽度
$dst_height = 240;//目标高度
//设置剪切位置和尺寸
$x = 100;//起始X坐标
$y = 100;//起始Y坐标
$width = 160;//剪切宽度
$height = 120;//剪切高度
//创建目标图片
$dst = imagecreatetruecolor($dst_width, $dst_height);
//剪切图片
imagecopy($dst, $src, 0, 0, $x, $y, $width, $height);
//输出图片
header('Content-Type: image/jpeg');
imagejpeg($dst);
//释放内存
imagedestroy($src);
imagedestroy($dst);
ログイン後にコピー

Imagick では、画像のトリミングは CropImage() メソッドを通じて実行されます。例:

//打开原始图片
$im = new Imagick('image.jpg');
//设置剪切位置和尺寸
$x = 100;//起始X坐标
$y = 100;//起始Y坐标
$width = 160;//剪切宽度
$height = 120;//剪切高度
//剪切图片
$im->cropImage($width, $height, $x, $y);
//输出图片
header('Content-Type: image/jpeg');
echo $im;
ログイン後にコピー

3. 高度な操作

  1. テキスト ウォーターマーク

テキスト ウォーターマークは一般的な画像の特殊効果で、サムネイルの生成に使用できます。画像のアップロードなどのシナリオでよく使用されます。 GD2 では、imagettftext() 関数を使用してテキストの透かしを実装できます。画像上に指定された文字を描画し、透かし入りの画像データを出力する関数です。例:

//打开原始图片
$src = imagecreatefromjpeg('image.jpg');
//设置文本颜色
$color = imagecolorallocate($src, 255, 0, 0);
//设置字体文件路径
$font = 'arial.ttf';
//设置字体大小
$size = 20;
//设置水印文本
$text = 'www.example.com';
//计算文本位置
$bbox = imagettfbbox($size, 0, $font, $text);
$x = imagesx($src) - $bbox[2] - 5;
$y = imagesy($src) - $bbox[1] - 5;
//添加水印
imagettftext($src, $size, 0, $x, $y, $color, $font, $text);
//输出图片
header('Content-Type: image/jpeg');
imagejpeg($src);
//释放内存
imagedestroy($src);
ログイン後にコピー

Imagick では、テキストの透かしは annotateImage() メソッドを通じて実装されます。例:

//打开原始图片
$im = new Imagick('image.jpg');
//创建画笔对象
$draw = new ImagickDraw();
//设置字体路径和大小
$draw->setFont('arial.ttf');
$draw->setFontSize(20);
//设置文本位置和颜色
$draw->setGravity(Imagick::GRAVITY_SOUTHEAST);
$draw->setFillColor('red');
//添加水印文本
$draw->annotation(5, 5, 'www.example.com');
//绘制水印
$im->drawImage($draw);
//输出图片
header('Content-Type: image/jpeg');
echo $im;
ログイン後にコピー
  1. 画像の特殊効果

画像の特殊効果は、ぼかし、鮮明化、レリーフ、その他の効果が必要な画像処理の焦点と難しさです。アルゴリズムを通じて処理されます。 GD2 では、imagefilter() 関数を使用して画像の特殊効果を実現できます。オリジナル画像にフィルタ処理を施し、特殊効果を施した画像データを出力する機能です。例:

//打开原始图片
$src = imagecreatefromjpeg('image.jpg');
//创建滤镜
$filter = IMG_FILTER_GRAYSCALE;//灰度滤镜
//应用滤镜
imagefilter($src, $filter);
//输出图片
header('Content-Type: image/jpeg');
imagejpeg($src);
//释放内存
imagedestroy($src);
ログイン後にコピー

Imagick では、画像の特殊効果はさまざまな方法で実現されます。たとえば、ガウスぼかし効果を実現するには、gaussianBlurImage() メソッドを使用します:

//打开原始图片
$im = new Imagick('image.jpg');
//应用高斯模糊滤镜
$im->gaussianBlurImage(10, 5);
//输出图片
header('Content-Type: image/jpeg');
echo $im;
ログイン後にコピー

IV. 概要

この記事では、基本操作と高度な操作を含む、PHP の一般的な画像処理関数を紹介します。画像のサイズ変更、トリミング、テキストの透かし入れ、画像の特殊効果など、すべて GD2 と Imagick の 2 つの拡張ライブラリを通じて実現できます。これらの関数を使用する場合は、画像の種類やデータ表現の違いに注意し、実際のニーズに応じて適切な関数やパラメータを選択する必要があります。同時に、サーバーへの負荷を避けるために、メモリ使用量やパフォーマンスなどの問題にも注意を払う必要があります。

以上がPHPアプリケーション向けの画像処理機能の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート