Dieser Artikel stellt das von PHP gelöste Problem der verlustfreien Komprimierung von Bildern vor und teilt es mit allen. Die Details sind wie folgt:
Empfohlenes Handbuch: php Vollständiges Handbuch zum Selbststudium
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, wenn ich PHPs imagecopyresized verwende, um ein großes Bild in ein kleines zu reduzieren, Das Bild wird zu diesem Zeitpunkt sehr unscharf, was nicht so gut ist wie die Verbesserung der Klarheit. Möglicherweise ist es 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('Content-Type:image/gif'); $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('Content-Type:image/jpeg'); $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('Content-Type:image/png'); $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,'rb'); $image_head = fread($fp,1024); fclose($fp); return preg_match("/".chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0'."/",$image_head)?false:true; } ?>
Empfohlene verwandte Artikel:
1.Wie man Bilder in PHP hochlädt und komprimiert
2.Wie man Bilder in PHP mit gleichen Proportionen komprimiert
Ähnliche Videoempfehlungen:
1.Dugu Jiujian (4)_PHP-Video-Tutorial
Das obige ist der detaillierte Inhalt vonLösung des Problems der verlustfreien Komprimierung von PHP-Bildern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!