本文主要和大家分享PHP实现上传裁剪图片,主要以代码的形式和大家分享,希望能帮助到大家。
/ 图片裁剪上传 // $source_path = 'E:\www\cylxsh\storage\app\\'.$url; // 原图路径 $source_path = storage_path('app\\'.$url); // 原图路径 $target_width = 1000; // 目标宽度 $target_height = 100; // 目标高度 $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); // 设置随机的文件名 $chars=null; $len = 50; if (is_null($chars)) { $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; } mt_srand(10000000*(double)microtime()); for ($i = 0, $fileName = '', $lc = strlen($chars)-1; $i < $len; $i++) { $fileName .= $chars[mt_rand(0, $lc)]; } //保存图片到本地 $res = imagepng($target_image,storage_path('\app\uploads\\'.date('Y').'\\'.date('m').'\\'.date('d').'\\'.$fileName)); if ($res == true){ unlink(storage_path('app\\'.$url)); $url = storage_path('\app\uploads\\'.date('Y').'\\'.date('m').'\\'.date('d').'\\'.$fileName); }else{ return view("Alert",["msg"=>"图片上传失败"]); }
相关推荐:
以上是PHP实现上传裁剪图片的详细内容。更多信息请关注PHP中文网其他相关文章!