今天项目里面有个需求是涉及到图片处理的,发现关于图片的处理有很多的应用场景,觉得大家都可能会遇到,于是就把一些经常用到的给整理、记录下来分享给大家。
1、将远程图片,保存到当前服务器
function saveImg($img_url){
$ext = strrchr($img_url, '.');
if (!in_array($ext, ['.jpg', '.png', '.jpeg', '.gif'])){
return $img_url;
}
$base_name = basename($img_url);
if(!is_dir("uploads/img")){
//文件夹不存在,先创建文件夹,并设置权限
mkdir("uploads/img",0777,true);
}
$save_path = "uploads/img/".mt_rand(10000,99999).$base_name;
//文件保存绝对路径
$img = file_get_contents($img_url);
file_put_contents($save_path, $img);
return $save_path;
}
2、表单上传图片,转换成base64格式
//photo为表单的属性
$photo = base64_encode(file_get_contents($_FILES['photo']['tmp_name']));
$base64 = "data:{$_FILES['photo']['type']};base64,".$photo;
3、base64格式图片保存到服务器
/**
* base64的图片保存到本地服务器
* @param $dir 文件夹路径,"a/b/"
* @param $base64 图片的base64格式
* @return string 保存的路径
*/
public static function saveBase64($base64,$dir='./photos/'){
if(!file_exists($dir)){
//检查是否有该文件夹,如果没有就创建,并给予最高权限
mkdir($dir,0777,true);
}
$saveUrl = $dir.uniqid().mt_rand(10000,99999).'.jpg';
file_put_contents($saveUrl, base64_decode($base64));
return $saveUrl;
}
4、form-data中媒体文件标识
form-data中媒体文件标识,有filename、filelength、content-type等信息
1、从上传的表单直接获取
['media'=>new \CURLFile($_FILES['inputFile']['tmp_name'],$_FILES['inputFile']['type'],$_FILES['inputFile']['name'])];
2、保存到本地服务器后,获取
'media'=>new \CURLFile(test.jpg)
5、服务器上的图片转换成base64格式
//转换成base64格式的
$image_info = getimagesize($ImageFile);
$image_data = fread(fopen($ImageFile, 'r'), filesize($ImageFile));
$base64_image = 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data));
unlink($ImageFile);
6、获取图片的hash_code
$url = "https:///uploads/attach/75b62b5b5b2f46a4cb30acb945.jpg";
//使用sha1生成
sha1_file($url);
sha1(file_get_contents($url))
//使用md5生成:
md5(file_get_contents($url))
完结
如果你在阅读这篇文章时有所收获,请不要忘记点赞评论加关注,你的支持是我创作的最大动力。当然,如果你在文中发现了疏漏之处,或是有着其他的见解,欢迎私信与我交流。
我是老卢,一个热爱分享、不断探索的知识旅者。