Maison  >  Article  >  php教程  >  php等比例压缩图片(jpg,jif,png图片等比例压缩)

php等比例压缩图片(jpg,jif,png图片等比例压缩)

WBOY
WBOYoriginal
2016-06-06 19:46:101355parcourir

?php/*+-----------------------------------------------------------------------+*//*+ jpg,jif,png 图片 等 比例 压缩 +*//*+-----------------------------------------------------------------------+*/class RarImag{/** * 得到等 比例 缩放的长宽 *

 <p><?php /*+-----------------------------------------------------------------------+*/
/*+ jpg,jif,png<strong><strong>图片</strong>等<strong><strong>比例</strong></strong><strong><strong>压缩</strong></strong>                                             +*/
/*+-----------------------------------------------------------------------+*/
class RarImag{
 /**
  * 得到等<strong><strong>比例</strong></strong>缩放的长宽
  */
 function getNewSize($maxWidth, $maxHeight, $srcWidth, $srcHeight) {
  if($srcWidth > $maxWidth) {
   $maxWidth = $maxWidth;
   if($srcHeight > $maxHeight) {
    $maxHeight = ($srcHeight/$srcHeight) * $maxWidth;
   } else {
     $maxHeight = $srcHeight;
   }
   return array('width' => $maxWidth,'height' => $maxHeight);
  } 
  
  if($srcHeight > $maxHeight) {
   $maxHeight = $maxHeight;
   if($srcWidth > $maxWidth) {
     $maxWidth = ($srcWidth/$srcHeight) * $maxHeight;
   } else {
     $maxWidth = $srcWidth;
   }
   return array('width' => $srcWidth,'height' => $maxHeight);
  } 
  
  return array('width' => $srcWidth,'height' => $srcHeight);</p><p> }
 /**
  * 等<strong><strong>比例</strong></strong>生成缩略图
  *
  * @param  String  $srcFile  原始文件路径
  * @param  String  $dstFile  目标文件路径
  * @param  Integer  $maxWidth  生成的目标文件的最大宽度
  * @param  Integer  $maxHeight  生成的目标文件的最大高度
  * @return  Boolean  生成成功则返回true,否则返回false
  */
 function makeThumb($srcFile, $dstFile, $maxWidth, $maxHeight) {
  if ($size = getimagesize($srcFile)) {
   $srcWidth = $size[0];
   $srcHeight = $size[1];
   $mime = $size['mime'];</p><p>   switch ($mime) {
    case 'image/jpeg';
     $isJpeg = true;
     break;
    case 'image/gif';
     $isGif = true;
     break;
    case 'image/png';
     $isPng = true;
     break;
    default:
     return false;
     break;
   }
   //header("Content-type:$mime");
   $arr = $this->getNewSize($maxWidth, $maxHeight, $srcWidth, $srcHeight);
   $thumbWidth = $arr['width'];
   $thumbHeight = $arr['height'];
   if (isset($isJpeg) && $isJpeg) {
    $dstThumbPic = imagecreatetruecolor($thumbWidth, $thumbHeight);
    $srcPic = imagecreatefromjpeg($srcFile);
    imagecopyresampled($dstThumbPic, $srcPic, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $srcWidth, $srcHeight);
    imagejpeg($dstThumbPic, $dstFile, 100);
    imagedestroy($dstThumbPic);
    imagedestroy($srcPic);
    return true;
   } elseif (isset($isGif) && $isGif) {
    $dstThumbPic = imagecreatetruecolor($thumbWidth, $thumbHeight);
    //创建透明画布
    imagealphablending($dstThumbPic, true);
    imagesavealpha($dstThumbPic, true);
    $trans_colour = imagecolorallocatealpha($dstThumbPic, 0, 0, 0, 127);
    imagefill($dstThumbPic, 0, 0, $trans_colour);</p><p>    $srcPic = imagecreatefromgif($srcFile);
    imagecopyresampled($dstThumbPic, $srcPic, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $srcWidth, $srcHeight);
    imagegif($dstThumbPic, $dstFile);
    imagedestroy($dstThumbPic);
    imagedestroy($srcPic);
    return true;
   } elseif (isset($isPng) && $isPng) {
    $dstThumbPic = imagecreatetruecolor($thumbWidth, $thumbHeight);
    //创建透明画布
    imagealphablending($dstThumbPic, true);
    imagesavealpha($dstThumbPic, true);
    $trans_colour = imagecolorallocatealpha($dstThumbPic, 0, 0, 0, 127);
    imagefill($dstThumbPic, 0, 0, $trans_colour);</p><p>    $srcPic = imagecreatefrompng($srcFile);
    imagecopyresampled($dstThumbPic, $srcPic, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $srcWidth, $srcHeight);
    imagepng($dstThumbPic, $dstFile);
    imagedestroy($dstThumbPic);
    imagedestroy($srcPic);
    return true;
   } else {
    return false;
   }
  } else {
   return false;
  }
 }
}
?></p>
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn