php图片压缩成指定大小的方法
php  /  管理员 发布于 7年前   206
1、按照指定的尺寸压缩图片
/** * 按照指定的尺寸压缩图片 * @param $source_path 原图路径 * @param $target_path 保存路径 * @param $imgWidth 目标宽度 * @param $imgHeight 目标高度 * @return bool|string */ function resize_image($source_path,$target_path,$imgWidth,$imgHeight) { $source_info = getimagesize($source_path); $source_mime = $source_info['mime']; switch ($source_mime) {case 'image/gif': $source_image = imagecreatefromgif($source_path); break;case 'image/jpeg': $source_image = imagecreatefromjpeg($source_path); break;case 'image/png': $source_image = imagecreatefrompng($source_path); break;default: return false; break; } $target_image = imagecreatetruecolor($imgWidth, $imgHeight); //创建一个彩色的底图 imagecopyresampled($target_image, $source_image, 0, 0, 0, 0, $imgWidth, $imgHeight, $source_info[0], $source_info[1]); //保存图片到本地 $dir = '../'.$target_path. '/'. date("Ymd") . '/'; if (!is_dir($dir)) {mkdir($dir, 0777); } $fileName = $dir.date("YmdHis").uniqid().'.jpg'; if(!imagejpeg($target_image,'./'.$fileName)){$fileName = ''; } imagedestroy($target_image); return $fileName; }
2、按照比例裁剪图片
/** * 图像裁剪 * @param $title string 原图路径 * @param $content string 需要裁剪的宽 * @param $encode string 需要裁剪的高 * @param $target_path string 需要保存的路径 */ function image_cropper($source_path, $target_width, $target_height, $target_path) { $source_info = getimagesize($source_path); $source_width = $source_info[0]; $source_height = $source_info[1]; $source_mime = $source_info['mime']; $source_ratio = $source_height / $source_width; $target_ratio = $target_height / $target_width; if ($source_ratio > $target_ratio) // 源图过高 {$cropped_width = $source_width;$cropped_height = $source_width * $target_ratio;$source_x = 0;$source_y = ($source_height - $cropped_height) / 2; }elseif ($source_ratio < $target_ratio){ // 源图过宽$cropped_width = $source_height / $target_ratio;$cropped_height = $source_height;$source_x = ($source_width - $cropped_width) / 2;$source_y = 0; }else{ // 源图适中$cropped_width = $source_width;$cropped_height = $source_height;$source_x = 0;$source_y = 0; } switch ($source_mime) {case 'image/gif': $source_image = imagecreatefromgif($source_path); break;case 'image/jpeg': $source_image = imagecreatefromjpeg($source_path); break;case 'image/png': $source_image = imagecreatefrompng($source_path); break;default: return false; break; } $target_image = imagecreatetruecolor($target_width, $target_height); $cropped_image = imagecreatetruecolor($cropped_width, $cropped_height); // 裁剪 imagecopy($cropped_image, $source_image, 0, 0, $source_x, $source_y, $cropped_width, $cropped_height); // 缩放 imagecopyresampled($target_image, $cropped_image, 0, 0, 0, 0, $target_width, $target_height, $cropped_width, $cropped_height); //保存图片到本地(两者选一) $dir = '../../'.$target_path. '/'. date("Ymd") . '/'; if (!is_dir($dir)) {mkdir($dir, 0777); } $fileName = $dir.date("YmdHis").uniqid().'.jpg'; if(!imagejpeg($target_image,'./'.$fileName)){$fileName = ''; } imagedestroy($target_image); return $fileName; }
推荐相关文章教程:php教程
以上就是php图片压缩成指定大小的方法的详细内容,更多请关注其它相关文章!
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号