>백엔드 개발 >PHP 튜토리얼 >PHP 이미지 처리(2부)

PHP 이미지 처리(2부)

齐天大圣
齐天大圣원래의
2020-05-03 12:45:53162검색

그림 배경 관리

저희가 캔버스를 만들기 전에 배운 내용은 공백으로 시작하여 색상, 그리기 점, 텍스트 등을 채우는 것이었습니다. 이제 기존 이미지에서 직접 배경을 로드할 수 있습니다. 일반적으로 사용되는 함수에는

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 = [&#39;1&#39; => &#39;git&#39;, &#39;2&#39; => &#39;jpeg&#39;, &#39;3&#39; => &#39;png&#39;];
    
    $createFunc = &#39;imagecreatefrom&#39; . $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 = &#39;image&#39;.$types[$type];
    $output($im);
    imagedestroy($im);
}
//image(&#39;timg.jpg&#39;, &#39;jpg&#39;);
image(&#39;1.png&#39;, &#39;png&#39;);

사진 크기 조정 및 자르기

다음은 매우 강력하고 크기 조정 및 자르기를 완료할 수 있는 기능입니다. 사진의 기능.

이 함수의 프로토타입은 다음과 같습니다.

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 => &#39;gif&#39;, 2 => &#39;jpeg&#39;, 3 => &#39;png&#39;];
    $type  = $types[$srcType];
    
    // 原图资源句柄
    $create = &#39;imagecreatefrom&#39; . $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 = &#39;image&#39; . $type;
    header("content-type:image/$type");
    $output($im);
    imagedestroy($im);
    imagedestroy($srcIm);
}
//thumb(&#39;timg.jpg&#39;, 200, 150);
thumb(&#39;timg.jpg&#39;, 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 => &#39;gif&#39;, 2 => &#39;jpeg&#39;, 3=> &#39;png&#39;];
    $type = $types[$srcType];
    // 原图资源句柄
    $create = &#39;imagecreatefrom&#39; . $type;
    $srcIm = $create($img);
    // 裁剪图片
    imagecopyresampled($im, $srcIm, 0, 0,
         $x, $y, $width, $height, $width, $height);
    // 输出图片
    $output = &#39;image&#39;.$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(&#39;timg.jpg&#39;);
$src = imagecreatefromjpeg(&#39;php.jpg&#39;);

list($srcW, $srcH) = getimagesize(&#39;php.jpg&#39;);
imagecopy($dst, $src, 0, 0, 0, 0, $srcW, $srcH);

header("content-type:image/jpeg");
imagejpeg($dst);
imagedestroy($dst);
imagedestroy($src);

PHP 이미지 처리(2부)

위 내용은 PHP 이미지 처리(2부)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.