Maison  >  Article  >  développement back-end  >  PHP résout le problème de la compression des images sans perte

PHP résout le problème de la compression des images sans perte

墨辰丷
墨辰丷original
2018-05-18 10:57:541268parcourir

Cet article présente principalement PHP pour résoudre le problème de la compression des images sans perte. Maintenant, je le partage avec vous et le donne comme référence.

Le code est le suivant :

header("Content-type: image/jpeg"); 
$file = "111.jpg"; 
$percent = 1.5; //图片压缩比 
list($width, $height) = getimagesize($file); //获取原图尺寸 
//缩放尺寸 
$newwidth = $width * $percent; 
$newheight = $height * $percent; 
$src_im = imagecreatefromjpeg($file); 
$dst_im = imagecreatetruecolor($newwidth, $newheight); 
imagecopyresized($dst_im, $src_im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 
imagejpeg($dst_im); //输出压缩后的图片 
imagedestroy($dst_im); 
imagedestroy($src_im);

J'ai découvert que lorsque j'utilisais l'imagecopyresized de PHP pour réduire une grande image à une petite image, l'image deviendra très floue. Pour améliorer la clarté à ce moment-là, il peut être préférable d'utiliser imagecopyresampled au lieu d'imagecopyresized.

Remarque : la perte de compression est inévitable. Que vous puissiez voir clairement ou non est en fait une question d'accepter ou non cette plage. Par exemple, certains points de l'image originale sur votre image font 2 pixels, mais. vous le compressez 5 fois, puis ces points disparaîtront.

<?php  
/** 
* desription 压缩图片 
* @param sting $imgsrc 图片路径 
* @param string $imgdst 压缩后保存路径 
*/ 
function image_png_size_add($imgsrc,$imgdst){  
 list($width,$height,$type)=getimagesize($imgsrc);  
 $new_width = ($width>600?600:$width)*0.9;  
 $new_height =($height>600?600:$height)*0.9;  
 switch($type){  
  case 1:  
   $giftype=check_gifcartoon($imgsrc);  
   if($giftype){  
    header(&#39;Content-Type:image/gif&#39;);  
    $image_wp=imagecreatetruecolor($new_width, $new_height);  
    $image = imagecreatefromgif($imgsrc);  
    imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);  
    imagejpeg($image_wp, $imgdst,75);  
    imagedestroy($image_wp);  
   }  
   break;  
  case 2:  
   header(&#39;Content-Type:image/jpeg&#39;);  
   $image_wp=imagecreatetruecolor($new_width, $new_height);  
   $image = imagecreatefromjpeg($imgsrc);  
   imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);  
   imagejpeg($image_wp, $imgdst,75);  
   imagedestroy($image_wp);  
   break;  
  case 3:  
   header(&#39;Content-Type:image/png&#39;);  
   $image_wp=imagecreatetruecolor($new_width, $new_height);  
   $image = imagecreatefrompng($imgsrc);  
   imagecopyresampled($image_wp, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);  
   imagejpeg($image_wp, $imgdst,75);  
   imagedestroy($image_wp);  
   break;  
 }  
}  
/** 
* desription 判断是否gif动画 
* @param sting $image_file图片路径 
* @return boolean t 是 f 否 
*/ 
function check_gifcartoon($image_file){  
 $fp = fopen($image_file,&#39;rb&#39;);  
 $image_head = fread($fp,1024);  
 fclose($fp);  
 return preg_match("/".chr(0x21).chr(0xff).chr(0x0b).&#39;NETSCAPE2.0&#39;."/",$image_head)?false:true;  
}  
?>

Recommandations associées :

Exemple de décompression de fichiers zip et de suppression de fichiers sous python_python

Fonction php pour implémenter la fonction de décompression

Fonction php pour implémenter la fonction de décompression

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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