图片压缩
Posted fatrabbit-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图片压缩相关的知识,希望对你有一定的参考价值。
- 将图片压缩成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]
以上是关于图片压缩的主要内容,如果未能解决你的问题,请参考以下文章