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 그림 대상,함 수 를 적용 하기 전에 이미지 createfromjpeg()로 그림 대상 을 읽 어야 합 니 다.만약 PHP 환경 이 PNG,GIF 를 지원 한다 면 이미지 createfromgif(),이미지 createfrompng()를 사용 할 수도 있 습 니 다.
$maxwidth 는 그림 을 만 드 는 최대 너비(단위:픽 셀)를 정의 합 니 다.
$maxheight 그림 생 성 최대 높이(단위:픽 셀)
$name 생 성 된 그림 이름
$filetype 최종 생 성 된 그림 형식(.jpg/.png/.gif)
코드 설명:
3~4 줄:크기 조정 이 필요 한 그림 의 실제 너비 읽 기
8~26 줄:실제 그림 의 너비 와 그림 을 생 성 해 야 하 는 너비 와 높이 의 압축 비율 을 계산 한 결과 그림 크기 를 너비 나 높이 에 따라 조정 하 는 지,현재 프로그램 은 너비 에 따라 그림 크기 를 조정 하 는 지 알 수 있 습 니 다.높이 에 따라 그림 크기 를 조정 하려 면 22 줄 의 문 구 를$widthratio>$heightratio 로 변경 할 수 있 습 니 다.
28~31 줄:실제 그림 의 길이 나 너비 가 규정된 그림 의 길이 나 너비 보다 작 으 면 길이 에 따라 그림 크기 를 조정 하거나 너비 에 따라 그림 크기 를 조정 합 니 다.
33~34 줄:최종 크기 조정 으로 생 성 된 그림 의 길 이 를 계산 합 니 다.
36~45 번 째 줄:계 산 된 최종 생 성 된 그림 의 길이 와 너비 에 따라 그림 크기 를 바 꾸 는 방법 은 두 가지 가 있 습 니 다.ImageCopyResized()함 수 는 모든 GD 버 전에 서 유효 하지만 그림 크기 를 조정 하 는 알고리즘 은 거 칠 습 니 다.ImageCopyResamples()는 픽 셀 플러그 인 알고리즘 이 얻 은 이미지 가장자리 가 부 드 럽 지만 이 함수 의 속 도 는 ImageCopyResized()보다 느 립 니 다.
47~49 줄:처 리 된 그림 을 최종 적 으로 생 성 합 니 다.GIF 나 PNG 를 생 성 하려 면 imagejpeg()함 수 를 imagegif()또는 imagepng()로 바 꿔 야 합 니 다.
51~56 줄:실제 그림 의 길이 가 정 해진 그림 의 너비 보다 작 으 면 그림 의 원형 을 유지 합 니 다.마찬가지 로 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 를 다시 시작 하면 됩 니 다.리 눅 스 환경 이 라면 GIF,PNG,JPEG 를 지원 하려 면 libpng,zlib,freetype 글꼴 을 다운로드 하고 설치 해 야 합 니 다.
더 많은 PHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기