首頁 >後端開發 >php教程 >PHP建立圖片縮圖

PHP建立圖片縮圖

WBOY
WBOY原創
2016-07-25 08:48:241053瀏覽
  1. /**
  2. * 썸네일을 생성하려면 이미지 업로드
  3. *
  4. * GD2 라이브러리 지원 필요
  5. *
  6. * 매개변수 new 썸네일('썸네일을 생성해야 하는 이미지의 원본 주소', '썸네일'은 초기화 시 필요 썸네일 너비', '썸네일 높이', '(선택 인자) 썸네일 저장 경로');
  7. * 마지막 인자를 지정하지 않으면 기본적으로 원본 이미지 디렉터리에 썸네일이 저장됩니다. Small 폴더에
  8. * Small 폴더가 없으면 자동으로 생성됩니다
  9. *
  10. * 초기화 후 썸네일 생성을 위해 producer 메소드를 호출해야 합니다
  11. * $ 썸네일 = 새 썸네일(''....);
  12. * $thumbnails->produce();
  13. *
  14. * 원본 이미지, 너비, 높이 및 관련 정보를 얻을 수 있습니다. image mime
  15. *
  16. * $thumbnails->getImageWidth(); //int 이미지 너비
  17. * $thumbnails->getImageHeight() // int 이미지 높이
  18. * $thumbnails-> ;getImageMime(); / / 이미지의 문자열 MIME
  19. *
  20. * $thumbnails->trueSize(); //array 이미지 뒤의 너비와 높이 값을 포함하는 배열입니다. 축소됨
  21. * $size = array ('width'=>'','height'=>'');
  22. * 이미지 축소 후 이미지의 너비와 높이를 가져옵니다
  23. * $size['width']//Equal ratio 썸네일의 너비
  24. * $size['height']//비례 썸네일의 높이
  25. *
  26. */
  27. 클래스 썸네일{
  28. private $imgSrc; 🎜 > private $saveSrc; //이미지 경로 저장, 기본적으로 비어 있음
  29. private $canvasWidth; //캔버스 너비
  30. private $canvasHeight; //캔버스 높이 캔버스 리소스
  31. private $dm; //이미지에서 반환된 리소스 복사
  32. /**
  33. * 클래스 초기화, 관련 설정 로드
  34. *
  35. * @param $imgSrc 썸네일이 필요한 이미지의 경로
  36. * @param $canvasWidth 썸네일의 너비
  37. * @ param $canvasHeight 썸네일 썸네일의 높이
  38. */
  39. 공용 함수 __construct($imgSrc,$canvasWidth,$canvasHeight,$saveSrc =null)
  40. {
  41. $this->imgSrc = $imgSrc;
  42. $this->canvasWidth = $canvasWidth;
  43. $this->canvasHeight = $canvasHeight;
  44. $ this-> saveSrc = $saveSrc;
  45. }
  46. /**
  47. * 썸네일 생성
  48. */
  49. 공용 함수 producer()
  50. {
  51. $this->createCanvas() ;
  52. $this->judgeImage();
  53. $this->copyImage();
  54. $this->headerImage()
  55. }
  56. /**
  57. * 로드된 이미지에 대한 정보 가져오기
  58. *
  59. * 길이, 너비, 이미지 유형 포함
  60. *
  61. * @return array 이미지 길이, 너비, MIME이 포함된 배열
  62. * /
  63. 비공개 함수 getImageInfo()
  64. {
  65. return getimagesize($this->imgSrc);
  66. }
  67. /**
  68. * 이미지 길이 가져오기
  69. *
  70. * @return int 이미지 너비
  71. */
  72. 공용 함수 getImageWidth()
  73. {
  74. $imageInfo = $this->getImageInfo();
  75. return $imageInfo['0'];
  76. }
  77. /* *
  78. * 이미지 높이 가져오기
  79. *
  80. * @return int 이미지 높이
  81. */
  82. 공용 함수 getImageHeight()
  83. {
  84. $imageInfo = $this->getImageInfo();
  85. return $imageInfo['1'];
  86. }
  87. /**
  88. * 이미지 유형 가져오기
  89. *
  90. * @return 이미지의 MIME 값
  91. */
  92. 공개 함수 getImageMime()
  93. {
  94. $imageInfo = $this->getImageInfo();
  95. return $imageInfo['mime' ];
  96. }
  97. /**
  98. * 캔버스 만들기
  99. *
  100. * 동시에 생성된 캔버스 리소스를 $this->im 속성에 넣습니다
  101. */
  102. 비공개 함수 createCanvas()
  103. {
  104. $size = $this->trueSize();
  105. $this-> ;im = imagecreatetruecolor($size['width'],$size['height']);
  106. }
  107. /**
  108. * 이미지의 MIME 값을 결정하고 사용할 함수를 결정
  109. *
  110. * 동시에 생성된 이미지 리소스를 $this->dm
  111. */
  112. 비공개 함수 JudgeImage ()
  113. {
  114. $mime = $this->getImageMime();
  115. 스위치($mime)
  116. {
  117. 케이스 'image/png':$dm = imagecreatefrompng($this ->imgSrc );
  118. break;
  119. 케이스 'image/gif':$dm = imagecreatefromgif($this->imgSrc);
  120. break;
  121. 케이스 ' image/jpg' :$dm = imagecreatefromjpeg($this->imgSrc);
  122. break;
  123. case 'image/jpeg':$dm = imagecreatefromgjpeg($this->imgSrc);
  124. 브레이크
  125. }
  126. $this->dm = $dm;
  127. }
  128. /**
  129. * 判斷圖片縮略後的寬度和高度
  130. *
  131. * 此寬度和高度也作為畫布的尺寸
  132. *
  133. * @return array 圖片經過等比例縮略之後的尺寸
  134. */
  135. public function trueSize()
  136. {
  137. $proportionW = $this->getImageWidth() / $this->canvasWidth;getImageHeight() / $this->canvasHeight;
  138. if( ($this->getImageWidth() canvasWidth) && ($this ->getImageHeight() canvasWidth) && ($this ->getImageHeight() canvasHeight) )
  139. {
  140. $trueSize = array('width'=>$this->getImageWidth(),'height'=>$ this->getImageHeight());
  141. } }
  142. elseif($proportionW >= $proportionH)
  143. {
  144. $trueSize = array('width'=>$this->canvasWidth ,'height'=>$this->getImageHeight() / $proportionW ) ;
  145. }
  146. else
  147. {
  148. $trueSize = array('width'=>$this-> ;getImageWidth() / $proportionH,'height'=>$this->canvasHeight) ;
  149. }
  150. return $trueSize;
  151. }
  152. /**
  153. * 將圖片複製到新的畫布上面
  154. *
  155. * 圖片會被等比例的縮放,不會變形
  156. * /
  157. 非函數copyImage()
  158. {
  159. $size = $this> $size = $this> $size = $this> $size = $this> $size = $this> $size = $this. - >trueSize();
  160. imagecopyresized($this->im, $this->dm , 0 , 0 , 0 , 0 , $size['width'] , $size['height'] , $this- > getImageWidth() , $this->getImageheight());
  161. }
  162. /**
  163. * 將圖片輸出
  164. *
  165. * 圖片的名稱預設和原圖片名稱相同
  166. *
  167. * 路徑為大圖片目前目錄下的small目錄內
  168. *
  169. * 如果small目錄不存在,則會自動建立
  170. */
  171. public function headerImage()
  172. {
  173. $public function headerImage()
  174. {
  175. $ strrpos ($this->imgSrc,'/');
  176. $imageName = substr($this ->imgSrc,($position 1));
  177. if($this->saveSrc)
  178. {
  179. $imageFlode = $this->saveSrc.'/';
  180. }
  181. else
  182. {
  183. $imageFlode = substr($this->imgSrc,0,$position).'/small / ';
  184. }
  185. if(!file_exists($imageFlode))
  186. {
  187. mkdir($imageFlode);
  188. }
  189. $saveSrc = $imageFlode);
  190. }
  191. $saveSrc = $imageFlode. > imagejpeg($this->im,$saveSrc);
}
}
複製程式碼


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn