前の章では、画像の透かし技術について学びました。透かし技術は、この章で学ぶスケーリングおよびトリミング技術と基本的に同じですが、使用する関数が若干異なります。
一般的に使用される 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); ?>
実験結果を見てみましょう:
次のセクション