그림 배경 관리
저희가 캔버스를 만들기 전에 배운 내용은 공백으로 시작하여 색상, 그리기 점, 텍스트 등을 채우는 것이었습니다. 이제 기존 이미지에서 직접 배경을 로드할 수 있습니다. 일반적으로 사용되는 함수에는
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); }
사진 워터마크
이미지 복사를 사용하여 사진 워터마크 기능을 완성하세요. 다른 기능 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_im 이미지에서 좌표가 src_x, src_y에서 시작하고 너비가 src_w, 높이가 src_h인 부분을 dst_im 이미지의 좌표가 dst_x, dst_y인 위치에 복사합니다.
<?php // 图片水印 $dst = imagecreatefromjpeg('timg.jpg'); $src = imagecreatefromjpeg('php.jpg'); list($srcW, $srcH) = getimagesize('php.jpg'); imagecopy($dst, $src, 0, 0, 0, 0, $srcW, $srcH); header("content-type:image/jpeg"); imagejpeg($dst); imagedestroy($dst); imagedestroy($src);
위 내용은 PHP 이미지 처리(2부)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!