-
-
/*
- * desc: 이미지 크기 조정(png, jpg, gif)
- * /
- class ResizeImage {
- //이미지 유형
- private $type;
- //실제 너비
- private $width;
- //실제 높이
- private $height;
- //너비 변경
- private $resize_width;
- //높이 변경
- private $resize_height;
- //이미지 자를지 여부
- private $cut;
- / /소스 image
- private $srcimg;
- //대상 이미지 주소
- private $dstimg;
- //임시 생성 이미지
- private $im;
함수 __construct($imgPath, $width, $height, $isCut, $savePath) {
- $this->srcimg = $imgPath;
- $this->resize_width = $width ;
- $this ->resize_height = $height;
- $this->cut = $isCut;
- //사진 유형
$this- >type = strtolower(substr (strrchr($this->srcimg,"."),1));
//이미지 초기화
- $this-> ;initi_img();
- //대상 이미지 주소
- $this -> dst_img($savePath);
- //--
- $this->width = Imagesx($this- >im);
- $ this->height = imagey($this->im);
- //이미지 생성
- $this->newimg();
- ImageDestroy( $this->im);
- }
비공개 함수 newimg() {
- //이미지 비율 변경
- $resize_ratio = ($ this->resize_width)/($this->resize_height );
- //실제 이미지의 비율
- $ratio = ($this->width)/($this->height)
- if($this->cut);
- //이미지 자르기
- $newimg = imagecreatetruecolor($this->resize_width,$this->resize_height);
- if($this ->type=="png") {
- imagefill($newimg, 0, 0, imagecolorallocatealpha($newimg, 0, 0, 0, 127));
- }
- if($ratio> =$resize_ratio) {
- //높은 우선순위
- imagecopyresampled($newimg, $this->im, 0, 0, 0, 0, $this->resize_width,$this->resize_height, ( ($this->height)*$resize_ratio), $this->height);
- } else {
- //너비 우선
- imagecopyresampled($newimg, $this->im, 0 , 0, 0, 0, $this->resize_width , $this->resize_height, $this->width, (($this->width)/$resize_ratio));
- }
- } else {
- //이미지를 자르지 마세요.
- if($ratio>=$resize_ratio) {
- $newimg = imagecreatetruecolor($this->resize_width,($this->resize_width)/$ratio );
- if($this-> ;type=="png") {
- imagefill($newimg, 0, 0, imagecolorallocatealpha($newimg, 0, 0, 0, 127));
- }
- imagecopyresampled($newimg, $this ->im, 0, 0, 0, 0, $this->resize_width, ($this->resize_width)/$ratio, $this->width, $this->height);
- } else {
- $newimg = imagecreatetruecolor(($this->resize_height)*$ratio,$this->resize_height);
- if($this- >type=="png") {
- imagefill($newimg, 0, 0, imagecolorallocatealpha($newimg, 0, 0, 0, 127));
- }
- imagecopyresampled($newimg, $ this->im, 0, 0, 0 , 0, ($this->resize_height)*$ratio, $this->resize_height, $this->width, $this->height);
- }
- }
- if( $this->type=="png") {
- imagesavealpha($newimg, true);
- imagepng($newimg,$this->dstimg) ;
- } else {
- imagejpeg ($newimg,$this->dstimg);
- }
- }
//이미지 초기화
- 비공개 함수 initi_img() {
- if( $this->type=="jpg") {
- $this->im = imagecreatefromjpeg($this->srcimg);
- }
- if($this->type== "gif") {
- $this->im = imagecreatefromgif($this->srcimg);
- }
- if($this-> ;type=="png") {
- $this->im = imagecreatefrompng($this->srcimg);
- }
- }
/ /이미지 대상 주소
- 비공개 함수 dst_img($ dstpath) {
- $full_length = strlen($this->srcimg);
$type_length = strlen($ this->type);
- $name_length = $full_length-$type_length;
- $name = substr($this->srcimg,0,$name_length -1);
- $this->dstimg = $dstpath;
- }
- }
- ?>
-
코드 복사
사용할 때 클래스 생성자를 직접 호출하면 됩니다.
$resizeimage = 새로운 크기 조정 이미지($imgPath, $width, $height, $isCut, $savePath);
매개변수
$imgPath: 원본 이미지 주소
$width: 썸네일 너비
$height: 썸네일 높이
$isCut: 자르기 여부, bool 값
$savePath: 썸네일 주소(원본 이미지 주소와 동일할 수 있음)
예:
-
-
include "ResizeImage.php";
$jpgResize = new ResizeImage("img/test_1920_1200.jpg", 320, 240, false, "img/test_320_240.jpg");
// png
- $pngResize = new ResizeImage("img/test_1024_746.png", 320, 240, false, "img/test_320_240.png");
- ?>
-
코드 복사
효과:
|