함수 resizeImage($im, $maxwidth, $maxheight, $name, $filetype)
{
$ pic _ width = imagesx ($ im);
$ pic _ height = imagesy ($ im);
If(($ maxwidth & amp;; & amp $ pic _ width & gt $ maxwidth) ($ maxheight & & amp$ pic _ height & gt$maxheight))
{
If($ maxwidth & amp;; & amp$ pic _ width & gt$maxwidth)
{
$ widthratio = $ maxwidth/$ pic _ width;
$ resizewidth _ tag = true
}
If ($ maxheight & & amp$ pic _ height & gt$maxheight)
{
$ heightratio = $ maxheight/$ pic _ height;
$ resizeheight _ tag = true
}
If ($ resizewidth _ tag & & amp$resizeheight_tag)
{
If($ width ratio & lt;; $heightratio)
$ ratio = $ widthratio
기타
$ ratio = $ heightratio
}
If ($ resizewidth _ tag & & amp! $resizeheight_tag)
$ ratio = $ widthratio
If ($ resizeheight _ tag & & amp! $resizewidth_tag)
$ ratio = $ heightratio
$ newwidth = $ pic _ width * $ ratio
$ newheight = $ pic _ height * $ ratio
If (function _ exists ("imagecopyresampled"))
{
$ newim = imagecreate truecolor ($ newwidth, $ newheight);
Imagecopyresampled($newim, $im, 0,0,0, $newwidth, $newheight, $pic_width, $ pic)
}
기타
{
$newim = imagecreate($newwidth, $ newheight);
Imagecopyrestized($ newim, $im, 0,0,0, $newwidth, $newheight, $pic_width, $ pic)
}
$name = $name. $ filetype
Imagejpeg($newim, $ name);
Imagedestroy ($ newim);
}
기타
{
$name = $name. $ filetype
Imagejpeg($im, $ name);
}
}
매개변수 설명:
$im 그림 객체. 이 함수를 적용하기 전에 imagecreatefromjpeg () 를 사용하여 그림 객체를 읽어야 합니다. PHP 환경에서 PNG 및 GIF 를 지원하는 경우 imagecreatefromgif () 및 imagecreatefrompng () 도 사용할 수 있습니다.
$maxwidth 는 생성된 그림의 최대 너비 (픽셀) 를 정의합니다.
$maxheight 생성된 그림의 최대 높이 (픽셀)
$name 에서 생성한 그림의 이름입니다
$filetype(.jpg/. Png/. Gif) 을 참조하십시오
코드 주석:
행 3~4: 확대/축소할 그림의 실제 너비와 높이를 읽습니다.
행 8-26: 실제 그림의 폭과 높이와 생성할 그림의 폭과 높이 사이의 압축 비율을 계산하여 너비 또는 높이에 따라 그림의 배율을 조정할지 여부를 결정합니다. 현재 방안은 폭에 따라 그림의 크기를 조절하는 것이다. 높이에 따라 그림의 크기를 조절하려면 행 22 의 문을 $ widthratio & gt$heightratio 로 변경할 수 있습니다
행 28~3 1 행: 실제 그림의 길이나 너비가 생성된 그림의 지정된 길이나 폭보다 작으면 그림은 길이나 너비에 따라 배율이 조정됩니다.
행 33-34: 최종 줌 결과 이미지의 길이와 폭을 계산합니다.
행 36~45: 결과 이미지의 계산된 길이와 폭에 따라 이미지 크기를 변경하는 두 가지 방법이 있습니다. ImageCopyResized () 함수는 모든 GD 버전에서 작동하지만 이미지 크기 조정 알고리즘은 거칠습니다. ImageCopyResamples () 는 픽셀 보간 알고리즘을 통해 이미지의 가장자리가 더 부드럽지만 ImageCopyResized () 보다 속도가 느립니다.
행 47~49: 최종적으로 처리된 이미지를 생성합니다. GIF 또는 PNG 를 생성해야 하는 경우 imagejpeg () 함수를 imagegif () 또는 imagepng () 로 변경해야 합니다.
행 5 1~56: 실제 그림의 길이와 폭이 생성된 그림의 지정된 길이와 폭보다 작으면 그림이 그대로 유지됩니다. 마찬가지로 GIF 또는 PNG 를 생성해야 하는 경우 imagejpeg () 함수를 imagegif () 또는 imagepng () 로 변경해야 합니다.
특별 지침:
GD 라이브러리는 1.6.2 이전 버전에서 GIF 형식을 지원하지만 1.6.2 이후 GIF 형식은 지원하지 않습니다. GIF 형식에서는 LZW 알고리즘 사용에 특허권이 관련되어 있기 때문입니다. WINDOWS 환경인 경우 PHP 를 입력하면 됩니다. INI 파일에서 extension=php_gd2.dll 을 찾아 # 을 제거하고 APACHE 를 다시 시작합니다. Linux 환경의 경우 GIF, PNG, JPEG 를 지원하려면 libpng, zlib, freetype 글꼴을 다운로드해서 설치해야 합니다.
자, PHP 이미지 압축 기능이 완성되었습니다. 마지막으로 전체 처리 아이디어를 요약해 보겠습니다.
실제 그림의 가로세로와 생성된 그림의 지정된 가로세로의 비율을 계산하여 실제 요구 사항에 따라 결과 그림의 크기 (그림을 너비에 따라 확대/축소하는지 높이에 따라 확대/축소하는지 여부) 를 계산한 다음 PHP 그림 처리 함수를 사용하여 그림을 처리하고 마지막으로 그림을 출력합니다.
다음은 PHP 그림 처리에서 그림을 압축하고 왜곡되지 않은 함수 설명입니다.