最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

php图片压缩成指定大小的方法

来源:动视网 责编:小采 时间:2020-11-03 18:20:43
文档

php图片压缩成指定大小的方法

php图片压缩成指定大小的方法:1、按照指定的尺寸压缩图片/** * 按照指定的尺寸压缩图片 * @param $source_path 原图路径 * @param $target_path 保存路径 * @param $imgWidth 目标宽度 * @param $imgHeight 目标高度 * @return bool|string */ fun
推荐度:
导读php图片压缩成指定大小的方法:1、按照指定的尺寸压缩图片/** * 按照指定的尺寸压缩图片 * @param $source_path 原图路径 * @param $target_path 保存路径 * @param $imgWidth 目标宽度 * @param $imgHeight 目标高度 * @return bool|string */ fun


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图片压缩成指定大小的方法

php图片压缩成指定大小的方法:1、按照指定的尺寸压缩图片/** * 按照指定的尺寸压缩图片 * @param $source_path 原图路径 * @param $target_path 保存路径 * @param $imgWidth 目标宽度 * @param $imgHeight 目标高度 * @return bool|string */ fun
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top