Heim  >  Artikel  >  Backend-Entwicklung  >  PHP löst das Problem der verlustfreien Komprimierung von Bildern

PHP löst das Problem der verlustfreien Komprimierung von Bildern

墨辰丷
墨辰丷Original
2018-05-18 10:57:541274Durchsuche

Dieser Artikel stellt hauptsächlich PHP vor, um das Problem der verlustfreien Komprimierung von Bildern zu lösen. Jetzt teile ich ihn mit Ihnen und gebe ihn als Referenz.

Der Code lautet wie folgt:

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);

Ich habe festgestellt, dass ich mit PHPs imagecopyresized ein großes Bild auf ein kleines verkleinere Erstens wird das Bild sehr unscharf. Um die Klarheit zu verbessern, ist es möglicherweise besser, imagecopyresampled anstelle von imagecopyresized zu verwenden.

Hinweis: Ob Sie klar sehen können oder nicht, hängt tatsächlich davon ab, ob Sie diesen Bereich akzeptieren. Einige Punkte des Originalbilds sind jedoch 2 Pixel groß Wenn Sie es fünfmal komprimieren, verschwinden diese Punkte.

<?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;  
}  
?>

Verwandte Empfehlungen:

Beispiel für das Dekomprimieren von ZIP-Dateien und das Löschen von Dateien unter python_python

PHP-Funktion zur Implementierung der Dekomprimierungsfunktion

PHP-Funktion zur Dekomprimierungsfunktion

Das obige ist der detaillierte Inhalt vonPHP löst das Problem der verlustfreien Komprimierung von Bildern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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