- 只针对限定1M
$data = file_get_contents("输入路径"); $maxSize = 1 * 1024 * 1024; //图片进行压缩 $data = compressImage($data, $maxSize); file_put_contents("输出路径", $data); function compressImage($data, $maxSize) { $size = strlen($data); $img = imagecreatefromstring($data); $width = imagesx($img); $height = imagesy($img); $percent = 1; $tmpWidth = $width; $tmpHeight = $height; while ($size > $maxSize) { $tmpPercent = round(log($maxSize, $size), 1); $tmpPercent = $tmpPercent == 1 ? $tmpPercent - 0.1 : $tmpPercent; $tmpWidth = $tmpWidth * $tmpPercent; $tmpHeight = $tmpHeight * $tmpPercent; $size = $tmpWidth * $tmpHeight / 0.95;//输出的是png,只适用于1M //$size = $tmpWidth * $tmpHeight / 8;//输出的是jpg $percent = $percent * $tmpPercent; } $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 $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); print_r("\npercent={$percent},newWidth={$newWidth},newHeight={$newHeight},size={$size}"); return $data; }
转载于:https://www.cnblogs.com/fatRabbit-/p/11394626.html