php 画像のスケーリングとトリミングのテクノロジー
前の章では、画像の透かし技術について学びました。透かし技術は、この章で学ぶスケーリングおよびトリミング技術と基本的に同じですが、使用する関数が若干異なります。
一般的に使用される 2 つの関数は次のとおりです:
| 関数名 | 関数の説明 |
|---|---|
| imagecopyresampled | 画像のコピー部分をリサンプルし、サイズを変更します |
| 画像コピーのサイズが変更されました | 画像の一部をコピーしてサイズ変更します |
これら 2 つの関数を見てみましょう。これら 2 つの関数の使い方は難しくありません。ただパラメータが少し複雑です。画像のスケーリングまたはトリミングを完了するには:
bool imagecopyresampled ( resource $ target image, resource $source image, int $ x Position starting from the target, int $ y Position starting from the target, int $ x Position startingソースから、int $ソースの y 位置、int $ターゲット画像の幅、int $ターゲット画像の高さ、int $ソース画像の幅、int $ソース画像の高さ)
上の画像と下の画像のパラメータは同じであることに注意してください。
bool imagecopyresize ( resource $ target image, resource $ source image, int $ target start x 位置, int $ target start y 位置, int $ ソース開始 x 位置, int $ ソース開始 y 位置, int $ターゲット画像, int $ターゲット画像の高さ, int $ソース画像の幅, int $ソース画像の高さ)
画像の拡大縮小とトリミングの方法は同じですが、違いはコピーするときです。 、画像全体がコピーされます。画像はまだフィルムの一部です。
操作手順:
ソース画像の開始点(x,y)から開始して、画像の幅と高さを指定します。対象画像の始点(x,y)に配置し、画像の幅と高さを指定します。
1. 画像をズームします。操作をステップに簡略化します
1. ソース画像を開きます
2. ソース画像を取得し、比率に従ってサイズを調整します
4. 指定したサイズの新しい画像をターゲット画像として作成します
5. 調整したサイズのソース画像をターゲットに配置します
6. リソースを破棄します
拡大縮小しますFan Bingbing:

<?php
//打开来源图片
$image = imagecreatefrompng('fbb.png');
//定义百分比,缩放到0.1大小
$percent = 0.1;
// 将图片宽高获取到
list($width, $height) = getimagesize('fbb.png');
//设置新的缩放的宽高
$new_width = $width * $percent;
$new_height = $height * $percent;
//创建新图片
$new_image = imagecreatetruecolor($new_width, $new_height);
//将原图$image按照指定的宽高,复制到$new_image指定的宽高大小中
imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
header('content-type:image/jpeg');
imagejpeg($new_image);
?>
2. 画像をトリミングします。操作をいくつかのステップに分けます:
1. ソース画像とターゲット画像を開きます
2. のポイントをインターセプトしますソース画像を選択し、幅と高さを設定します。ターゲット画像に挿入します。 (トリミング)
3. 入力した画像を保存します
4. リソースを破棄します
下の写真の「度」という単語を切り取って、ハスキー犬の顔に貼り付けます:
Baidu のロゴ:
ハスキーの写真:

アイデアを整理しましょう:
度の x 軸と y 軸の開始座標は 407、154 です
x、y 座標から始まる単語「度」の幅と高さは: 80 、89
写真の中のハスキーの顔のx、y座標は: 281、71
写真の中のハスキーの顔のx、y座標は: 132、160
私たちは皆、座標と幅を知っています。関数の使用法を見てみましょう:
<?php
$dst = imagecreatefrompng('hsq.png');
$src = imagecreatefrompng('du.png');
imagecopyresized($dst, $src, 281, 71, 407, 154, 132, 160, 80, 90);
header('content-type:image/jpeg');
imagejpeg($dst);
imagedestroy($dst);
imagedestroy($src);
?>実験結果を見てみましょう:



