- /**
- * 썸네일을 생성하려면 이미지 업로드
- *
- * GD2 라이브러리 지원 필요
- *
- * 매개변수 new 썸네일('썸네일을 생성해야 하는 이미지의 원본 주소', '썸네일'은 초기화 시 필요 썸네일 너비', '썸네일 높이', '(선택 인자) 썸네일 저장 경로');
- * 마지막 인자를 지정하지 않으면 기본적으로 원본 이미지 디렉터리에 썸네일이 저장됩니다. Small 폴더에
- * Small 폴더가 없으면 자동으로 생성됩니다
- *
- * 초기화 후 썸네일 생성을 위해 producer 메소드를 호출해야 합니다
- * $ 썸네일 = 새 썸네일(''....);
- * $thumbnails->produce();
- *
- * 원본 이미지, 너비, 높이 및 관련 정보를 얻을 수 있습니다. image mime
- *
- * $thumbnails->getImageWidth(); //int 이미지 너비
- * $thumbnails->getImageHeight() // int 이미지 높이
- * $thumbnails-> ;getImageMime(); / / 이미지의 문자열 MIME
- *
- * $thumbnails->trueSize(); //array 이미지 뒤의 너비와 높이 값을 포함하는 배열입니다. 축소됨
- * $size = array ('width'=>'','height'=>'');
- * 이미지 축소 후 이미지의 너비와 높이를 가져옵니다
- * $size['width']//Equal ratio 썸네일의 너비
- * $size['height']//비례 썸네일의 높이
- *
- */
- 클래스 썸네일{
-
- private $imgSrc; 🎜 > private $saveSrc; //이미지 경로 저장, 기본적으로 비어 있음
- private $canvasWidth; //캔버스 너비
- private $canvasHeight; //캔버스 높이 캔버스 리소스
- private $dm; //이미지에서 반환된 리소스 복사
-
- /**
- * 클래스 초기화, 관련 설정 로드
- *
- * @param $imgSrc 썸네일이 필요한 이미지의 경로
- * @param $canvasWidth 썸네일의 너비
- * @ param $canvasHeight 썸네일 썸네일의 높이
- */
- 공용 함수 __construct($imgSrc,$canvasWidth,$canvasHeight,$saveSrc =null)
- {
- $this->imgSrc = $imgSrc;
- $this->canvasWidth = $canvasWidth;
- $this->canvasHeight = $canvasHeight;
- $ this-> saveSrc = $saveSrc;
- }
-
- /**
- * 썸네일 생성
- */
- 공용 함수 producer()
- {
- $this->createCanvas() ;
- $this->judgeImage();
- $this->copyImage();
- $this->headerImage()
- }
-
- /**
- * 로드된 이미지에 대한 정보 가져오기
- *
- * 길이, 너비, 이미지 유형 포함
- *
- * @return array 이미지 길이, 너비, MIME이 포함된 배열
- * /
- 비공개 함수 getImageInfo()
- {
- return getimagesize($this->imgSrc);
- }
-
- /**
- * 이미지 길이 가져오기
- *
- * @return int 이미지 너비
- */
- 공용 함수 getImageWidth()
- {
- $imageInfo = $this->getImageInfo();
- return $imageInfo['0'];
- }
-
- /* *
- * 이미지 높이 가져오기
- *
- * @return int 이미지 높이
- */
- 공용 함수 getImageHeight()
- {
- $imageInfo = $this->getImageInfo();
- return $imageInfo['1'];
- }
-
- /**
- * 이미지 유형 가져오기
- *
- * @return 이미지의 MIME 값
- */
- 공개 함수 getImageMime()
- {
- $imageInfo = $this->getImageInfo();
- return $imageInfo['mime' ];
- }
-
- /**
- * 캔버스 만들기
- *
- * 동시에 생성된 캔버스 리소스를 $this->im 속성에 넣습니다
- */
- 비공개 함수 createCanvas()
- {
- $size = $this->trueSize();
- $this-> ;im = imagecreatetruecolor($size['width'],$size['height']);
- }
-
- /**
- * 이미지의 MIME 값을 결정하고 사용할 함수를 결정
- *
- * 동시에 생성된 이미지 리소스를 $this->dm
- */
- 비공개 함수 JudgeImage ()
- {
- $mime = $this->getImageMime();
- 스위치($mime)
- {
- 케이스 'image/png':$dm = imagecreatefrompng($this ->imgSrc );
- break;
-
- 케이스 'image/gif':$dm = imagecreatefromgif($this->imgSrc);
- break;
-
- 케이스 ' image/jpg' :$dm = imagecreatefromjpeg($this->imgSrc);
- break;
-
- case 'image/jpeg':$dm = imagecreatefromgjpeg($this->imgSrc);
- 브레이크
- }
- $this->dm = $dm;
- }
-
- /**
- * 判斷圖片縮略後的寬度和高度
- *
- * 此寬度和高度也作為畫布的尺寸
- *
- * @return array 圖片經過等比例縮略之後的尺寸
- */
- public function trueSize()
- {
- $proportionW = $this->getImageWidth() / $this->canvasWidth;getImageHeight() / $this->canvasHeight;
-
- if( ($this->getImageWidth() canvasWidth) && ($this ->getImageHeight() canvasWidth) && ($this ->getImageHeight() canvasHeight) )
- {
- $trueSize = array('width'=>$this->getImageWidth(),'height'=>$ this->getImageHeight());
- } }
- elseif($proportionW >= $proportionH)
- {
- $trueSize = array('width'=>$this->canvasWidth ,'height'=>$this->getImageHeight() / $proportionW ) ;
- }
- else
- {
- $trueSize = array('width'=>$this-> ;getImageWidth() / $proportionH,'height'=>$this->canvasHeight) ;
- }
- return $trueSize;
- }
-
- /**
- * 將圖片複製到新的畫布上面
- *
- * 圖片會被等比例的縮放,不會變形
- * /
- 非函數copyImage()
- {
- $size = $this> $size = $this> $size = $this> $size = $this> $size = $this> $size = $this. - >trueSize();
- imagecopyresized($this->im, $this->dm , 0 , 0 , 0 , 0 , $size['width'] , $size['height'] , $this- > getImageWidth() , $this->getImageheight());
- }
-
- /**
- * 將圖片輸出
- *
- * 圖片的名稱預設和原圖片名稱相同
- *
- * 路徑為大圖片目前目錄下的small目錄內
- *
- * 如果small目錄不存在,則會自動建立
- */
- public function headerImage()
- {
- $public function headerImage()
- {
- $ strrpos ($this->imgSrc,'/');
- $imageName = substr($this ->imgSrc,($position 1));
- if($this->saveSrc)
- {
- $imageFlode = $this->saveSrc.'/';
- }
- else
- {
- $imageFlode = substr($this->imgSrc,0,$position).'/small / ';
- }
- if(!file_exists($imageFlode))
- {
- mkdir($imageFlode);
- }
- $saveSrc = $imageFlode);
- }
- $saveSrc = $imageFlode. > imagejpeg($this->im,$saveSrc);
} }
複製程式碼 |