ホームページ >バックエンド開発 >PHPチュートリアル >PHP画像処理(その2)
写真の背景管理
キャンバスを作成するために以前に学んだことは、空白から始めて、色、描画ポイント、テキストなどで塗りつぶすということでした。これで、既存の画像から背景を直接ロードできるようになりました。よく使用される関数がいくつかあります:
imagecreatefrompng()、imagecreatefromjpeg()、imagecreatefromgif()。これらは、対応する画像フォーマットをロードすることを示します。
さらに、4 つのセルを含む配列を返す別の関数 getimagesize() を学習します。インデックス 0 には画像の幅のピクセル値が含まれ、インデックス 1 には画像の高さのピクセル値が含まれます。インデックス 2 は画像タイプのマークです: 1 = GIF、2 = JPG、3 = PNG、...
<?php /** * 向不同的格式的图片中间画一个字符 */ function image($imgfile, $string) { list($width, $height, $type) = getimagesize($imgfile); $types = ['1' => 'git', '2' => 'jpeg', '3' => 'png']; $createFunc = 'imagecreatefrom' . $types[$type]; $im = $createFunc($imgfile); $textColor = imagecolorallocate($im, 255, 0, 0); $x = ($width - imagefontwidth(5) * strlen($string)) / 2; $y = ($height - imagefontheight(5)) / 2; imagestring($im, 5, $x, $y, $string, $textColor); header("Content-type:image/".$types[$type]); $output = 'image'.$types[$type]; $output($im); imagedestroy($im); } //image('timg.jpg', 'jpg'); image('1.png', 'png');
画像のスケーリングとトリミング
以下は非常に強力で、スケーリングとトリミングを完了できる機能です。写真の機能。
この関数のプロトタイプは次のとおりです:
bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )
imagecopyresampled() ある画像内の正方形の領域を別の画像にコピーし、ピクセル値を滑らかに補間します。これにより、特に、優れた鮮明さを維持しながら画像のサイズを縮小します。
Parameters
dst_image ターゲット画像接続リソース。
src_image ソース画像リンク リソース。
dst_x ターゲット X 座標点。
dst_y ターゲットの Y 座標点。
src_x ソースの X 座標点。
src_y ソースの Y 座標点。
dst_w ターゲット幅。
dst_h 目標高さ。
src_w ソース画像の幅。
src_h ソース画像の高さ。
画像のサムネイル
/** * 图片等比例缩放 * @param string img 原图路径 * @param int width 新图宽度 * @param int height 新图高度 */ function thumb($img, $width = 0, $height = 0) { // 获取图片信息 list($srcW, $srcH, $srcType) = getimagesize($img); $types = [1 => 'gif', 2 => 'jpeg', 3 => 'png']; $type = $types[$srcType]; // 原图资源句柄 $create = 'imagecreatefrom' . $type; $srcIm = $create($img); $ratioOrig = $srcW / $srcH; if ($width / $height > $ratioOrig) { $width = $height * $ratioOrig; } else { $height = $width / $ratioOrig; } // 新图资源 $im = imagecreatetruecolor($width, $height); imagecopyresampled($im, $srcIm, 0, 0, 0, 0, $width, $height, $srcW, $srcH); $output = 'image' . $type; header("content-type:image/$type"); $output($im); imagedestroy($im); imagedestroy($srcIm); } //thumb('timg.jpg', 200, 150); thumb('timg.jpg', 300, 10000); // 如想按某一边等比例缩放,只要把另一边值设为无限大即可
画像のトリミング
/** * @param string $img 裁剪图路径 * @param int $x 裁剪点x坐标 * @param int $y 裁剪点y坐标 * @param int $width 图片裁剪的宽度 * @param int $height 图片裁剪的高度 */ function crop ($img, $x, $y, $width, $height) { // 获取图片信息 $im = imagecreatetruecolor($width, $height); $srcType = getimagesize($img)[2]; $types = [1 => 'gif', 2 => 'jpeg', 3=> 'png']; $type = $types[$srcType]; // 原图资源句柄 $create = 'imagecreatefrom' . $type; $srcIm = $create($img); // 裁剪图片 imagecopyresampled($im, $srcIm, 0, 0, $x, $y, $width, $height, $width, $height); // 输出图片 $output = 'image'.$type; header("content-type:image/$type"); $output($im); imagedestroy($im); imagedestroy($srcIm); }
画像の透かし
画像の透かし機能を完成させるにはimagecopyresampledを使用してください, しかし、ここでは別の関数 imagecopy を学びます。
bool imagecopy( resource $dst_im, resource $src_im, int $dst_x, int $dst_y, int $src_x, int $src_y, int $src_w, int $src_h )
src_x, src_y から始まり、幅 src_w、高さ src_h の src_im 画像の部分を、座標が dst_x と dst_y である dst_im 画像の位置にコピーします。
りー以上がPHP画像処理(その2)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。