Cet article présente le problème de la compression sans perte des images résolu par PHP et le partage avec tout le monde. Les détails sont les suivants :
Manuel recommandé : php. manuel d'auto-apprentissage complet
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'utilise l'imagecopyresized de PHP pour réduire une grande image en une petite, l'image deviendra très floue. Pour le moment, ce n'est pas aussi efficace que d'améliorer la clarté. Il serait peut-être préférable d'utiliser une image copiée rééchantillonnée au lieu d'une image copiée redimensionnée.
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('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; } ?>
Articles connexes recommandés :
1.Comment télécharger et compresser des images en php
2.Comment compresser des images en php avec des proportions égales
Recommandations vidéo associées :
1.Dugu Jiujian (4)_Tutoriel vidéo PHP
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!