概述
本文主要和大家分享PHP实现上传裁剪图片,主要以代码的形式和大家分享,希望能帮助到大家。/ 图片裁剪上传
// $source_path = 'E:wwwcylxshstorageapp\'.$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('appuploads\'.date('Y').'\'.date('m').'\'.date('d').'\'.$fileName));
if ($res == true){
unlink(storage_path('app\'.$url));
$url = storage_path('appuploads\'.date('Y').'\'.date('m').'\'.date('d').'\'.$fileName);
}else{
return view("Alert",["msg"=>"图片上传失败"]);
}
相关推荐:
最后
以上就是还单身盼望为你收集整理的php 图片裁剪保存,PHP实现上传裁剪图片的全部内容,希望文章能够帮你解决php 图片裁剪保存,PHP实现上传裁剪图片所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复