Heim > Backend-Entwicklung > PHP-Tutorial > php实现图片居中裁剪并缩放

php实现图片居中裁剪并缩放

WBOY
Freigeben: 2016-06-23 13:41:35
Original
1446 Leute haben es durchsucht

  1 <?php  2     /*  3     ** author 李攀  4     ** email 1061589921@qq.com  5     ** 实现移动开发中,多张图片排列.  6     */  7     $file = './234.png';  8     $Image = new image($file);  9     $width = $Image->getImageWidth(); 10     $height = $Image->getImageHeight(); 11     //判断该相片是否长宽相等 12     if($width != $height){ 13         //不相等则先以最小边为长度截取图片中心部分 14         if($width > $height){ 15             $x = ($width - $height) / 2; 16             $y = 0; 17             $width = $height; 18         }else{ 19             $y = ($height - $width) / 2; 20             $x = 0; 21             $height = $width; 22         } 23         $Image->crop($file,$width,$height,$x,$y,$file); 24     } 25  26     //等比例缩放图片 27     $dst_w = 100; 28     $dst_h = 100; 29     $Image->reduce($file,$dst_w,$dst_h,$file); 30 ?> 31 <?php 32 class image{ 33     private $_width; 34     private $_height; 35     private $_type; 36     //实例化时获取图片信息 37      function __construct($file_url){ 38          $info = getimagesize($file_url); 39          $this->_width = $info[0]; 40          $this->_height = $info[1]; 41          $type = $info['mime']; 42          $type = explode('/',$type); 43          $this->_type = $type[1]; 44      } 45      //返回图片类型 46      public function getImageType(){ 47          return $this->_type; 48      } 49      //返回图片宽度 50     public function getImageWidth(){ 51         return $this->_width; 52     } 53     //返回图片高度 54     public function getImageHeight(){ 55         return $this->_height; 56     } 57  58     /* 59     **图片裁剪 60     ** $tmp_image源文件 61     ** $dst_w 裁剪后的图片的宽度 62     ** $dst_h 裁剪后的图片的高度 63     ** $x 在源图的$x处坐标开始裁剪 64     ** $y 在源图的$y处坐标开始裁剪  65     */ 66     public function crop($tmp_image,$dst_w,$dst_h,$x,$y,$path){ 67         switch($this->_type){ 68             case 'jpeg': 69                 $src = imagecreatefromjpeg($tmp_image); 70                 break; 71             case 'gif': 72                 $src = imagecreatefromgif($tmp_image); 73                 break; 74             case 'png': 75                 $src = imagecreatefrompng($tmp_image); 76                 break; 77         } 78  79         $dst = imagecreatetruecolor($dst_w,$dst_h); 80         $color = imagecolorallocate($dst,255,255,255); 81         imagecolortransparent($dst,$color); 82         imagefill($dst,0,0,$color); 83         $bool = imagecopyresampled($dst,$src, 0,0,$x,$y, $dst_w,$dst_h,$dst_w,$dst_h); 84         switch($this->_type){ 85             case 'jpeg': 86                 imagejpeg($dst,$path,100); 87                 break; 88             case 'gif': 89                 imagegif($dst,$path); 90                 break; 91             case 'png': 92                 imagepng($dst,$path); 93                 break; 94         } 95  96         imagedestroy($src); 97         imagedestroy($dst); 98         return $bool; 99     }100 101     /*102     ** 等比例缩放图片103     ** $tmp_image源图104     ** $dst_w 缩放后的图片宽度105     ** $dst_h 缩放后的图片高度106     */107     public function reduce($tmp_image,$dst_w,$dst_h,$path){108         switch($this->_type){109             case 'jpeg':110                 $src = imagecreatefromjpeg($tmp_image);111                 break;112             case 'gif':113                 $src = imagecreatefromgif($tmp_image);114                 break;115             case 'png':116                 $src = imagecreatefrompng($tmp_image);117                 break;118         }119         $imagex = imagesx($src);120         $imagey = imagesy($src);121         $dst = imagecreatetruecolor($dst_w,$dst_h);122         $color = imagecolorallocate($dst,255,255,255);123         imagecolortransparent($dst,$color);124         imagefill($dst,0,0,$color);125         $bool = imagecopyresampled($dst,$src,0,0,0,0,$dst_w,$dst_h,$imagex,$imagey);126         switch($this->_type){127             case 'jpeg':128                 imagejpeg($dst,$path,100);129                 break;130             case 'gif':131                 imagegif($dst,$path);132                 break;133             case 'png':134                 imagepng($dst,$path);135                 break;136         }137         imagedestroy($src);138         imagedestroy($dst);139         return $bool;140     }141 }
Nach dem Login kopieren

 



Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage