- 将图片压缩成jpg或png
$type = explode(\'/\', $file->type); $mainType = $type[0]; $subType = $type[1]; $isImage = $mainType == \'image\'; $isGif = $subType == \'gif\';//gif压缩会变静态的,所以过滤掉 if ($isImage) { $maxSize = 1024 * 1024; if (!$isGif) { //图片进行压缩 $file->data = $this->compressImage($file->data, $maxSize); } //生成文件 } function compressImage($data, $maxSize, $percent = 1) { $size = strlen($data); if ($size <= $maxSize) { return $data; } $img = imagecreatefromstring($data); $width = imagesx($img); $height = imagesy($img); $newWidth = $width * $percent; $newHeight = $height * $percent; $newImg = imagecreatetruecolor($newWidth, $newHeight); imagecopyresampled($newImg, $img, 0, 0, 0, 0, floor($newWidth), floor($newHeight), $width, $height); ob_start(); //Turn on output buffering imagepng($newImg); //Generate your image //imagejpeg($newImg); $data = $output = ob_get_contents(); // get the image as a string in a variable ob_end_clean(); //Turn off output buffering and clean it imagedestroy($newImg); $percent -= 0.1; print_r("\npercent={$percent},size={$size}"); return self::compressImage($data, $maxSize,$percent); }
- jpg
- 4.58M:(1)710KB[4]
- 3.78M:(2)267KB[1]
- 1.38M:(3)718KB[1]
- png
- 4.58M:(1)997.29[6]
- 3.78M:(2)982.2KB[4]
- 1.38M:(3)928KB[5]
相关文章:
- 图片 压缩 2021-12-16
- JavaScript实现图片压缩,JS图片压缩 2021-11-04
- JPG图片压缩成PNG图片怎么压缩,压缩的方法 2021-10-18
- Nginx网络压缩 CSS压缩 图片压缩 JSON压缩 2022-02-08