>  기사  >  백엔드 개발  >  변형 없는 PHP 줌 이미지

변형 없는 PHP 줌 이미지

尚
원래의
2019-10-31 14:57:002555검색

변형 없는 PHP 줌 이미지

php 비변형 확대/축소 이미지:

function resizeImage($im,$maxwidth,$maxheight,$name,$filetype)
{
    $pic_width = imagesx($im);
    $pic_height = imagesy($im);
 
    if(($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight))
    {
        if($maxwidth && $pic_width>$maxwidth)
        {
            $widthratio = $maxwidth/$pic_width;
            $resizewidth_tag = true;
        }
 
        if($maxheight && $pic_height>$maxheight)
        {
            $heightratio = $maxheight/$pic_height;
            $resizeheight_tag = true;
        }
 
        if($resizewidth_tag && $resizeheight_tag)
        {
            if($widthratio<$heightratio)
                $ratio = $widthratio;
            else
                $ratio = $heightratio;
        }
 
        if($resizewidth_tag && !$resizeheight_tag)
            $ratio = $widthratio;
        if($resizeheight_tag && !$resizewidth_tag)
            $ratio = $heightratio;
 
        $newwidth = $pic_width * $ratio;
        $newheight = $pic_height * $ratio;
 
        if(function_exists("imagecopyresampled"))
        {
            $newim = imagecreatetruecolor($newwidth,$newheight);
           imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);
        }
        else
        {
            $newim = imagecreate($newwidth,$newheight);
           imagecopyresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height);
        }
 
        $name = $name.$filetype;
        imagejpeg($newim,$name);
        imagedestroy($newim);
    }
    else
    {
        $name = $name.$filetype;
        imagejpeg($im,$name);
    }           
}

매개변수 설명:

$im 이미지 개체, 함수를 적용하기 전에 PHP 환경이 PNG, GIF를 지원하는 경우 imagecreatefromjpeg()를 사용하여 이미지 개체를 읽어야 합니다. , imagecreatefromgif(), imagecreatefrompng()를 사용할 수도 있습니다.

$maxwidth는 생성된 이미지의 최대 너비를 정의합니다(단위: 픽셀)

$maxheight 생성된 이미지의 최대 높이(단위: 픽셀)

$name 생성된 이미지 이름

$filetype 최종 생성된 이미지 유형(.jpg/.png/.gif)

코드 설명:

Line 3~4: 크기 조정이 필요한 이미지의 실제 너비와 높이를 읽습니다

8~26행: 실제 이미지의 너비와 높이를 계산하고 이미지의 너비와 높이의 압축 비율을 생성해야 하며, 최종적으로 이미지 크기 조정이 현재 프로그램의 너비에 따라 결정되는지 높이에 따라 결정됩니다. 너비를 기준으로 이미지의 크기를 조정합니다. 높이를 기준으로 이미지 크기를 조정하려면 22행의 명령문을 $widthratio>$heightratio

28~31행: 실제 이미지의 길이나 너비가 이미지의 길이나 너비보다 작은 경우 생성된 이미지를 선택한 다음 길이를 기준으로 이미지 크기를 조정하거나 너비를 기준으로 이미지 크기를 조정합니다.

33~34행: 최종 확대된 이미지의 길이와 너비를 계산합니다.

라인 36~45: 최종 생성된 이미지의 계산된 길이와 너비에 따라 이미지 크기를 변경합니다. 이미지 크기를 변경하는 방법에는 두 가지가 있습니다. ImageCopyReized() 함수는 모든 GD 버전에서 효과적이지만 해당 알고리즘은 다음과 같습니다. 이미지 크기 조정은 상대적으로 거칠습니다. ImageCopyResamples()는 픽셀 보간 알고리즘으로 얻은 이미지 가장자리가 비교적 부드럽지만 이 함수의 속도는 ImageCopyResized()보다 느립니다.

라인 47~49: 최종적으로 처리된 이미지가 생성됩니다. GIF 또는 PNG를 생성해야 하는 경우 imagejpeg() 함수를 imagegif() 또는 imagepng()로 변경해야 합니다.

라인 51~56: 실제로 If 이미지의 길이와 너비가 생성된 이미지의 지정된 길이와 너비보다 작으면 이미지는 그대로 유지됩니다. 마찬가지로 GIF 또는 PNG를 생성해야 하는 경우 imagejpeg() 함수를 imagegif로 변경해야 합니다. () 또는 imagepng().

특별 참고 사항:

GD 라이브러리 버전 1.6.2는 이전에 GIF 형식을 지원했지만 GIF ​​형식은 LZW 알고리즘을 사용하고 특허권을 포함하기 때문에 GD 버전 1.6.2 이후에는 GIF 형식을 지원하지 않습니다. WINDOWS 환경의 경우 PHP.INI 파일만 입력하면 Extension=php_gd2.dll을 찾아 #을 제거한 후 APACHE를 다시 시작하면 됩니다. JPEG의 경우 libpng, zlib, freetype 글꼴을 다운로드하여 설치해야 합니다.

추천: php 서버

위 내용은 변형 없는 PHP 줌 이미지의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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