《PHP保存表单中base64图片的函数》要点:
本文介绍了PHP保存表单中base64图片的函数,希望对您有用。如果有疑问,可以联系我们。
相关主题:PHP开发
这是维易PHP的一个保存客户端发上来的base64代码,把它保存为图片。
发上来的代码如:
- /9j/4AAQSkZJRgABAQAA .....后面略,全是base64代码
调用示例:
- #1、使用函数自动生成图片名
- base64ToImg($str ,ROOT.'aa/bb'); #会在根目录下aa/bb下保存为类似201704222316021151.jpeg的图片名
- #2、使用自定义图片名
- base64ToImg($str ,ROOT.'a.jpg');
返回值:
保存失败或base64代码不合格时,返回false
成功则返回含路径的新图片名。
函数代码:其中的mkdirs()是递归创建目录函数,参http://www.vephp.com/jiaocheng/73.html
- /** base64保存为图片
- * 作者:http://www.vephp.com 维易PHP
- * @param string $base64Str 图片中src部分的base64代码
- * @param string $pathOrName 可以是路径+指定文件名,也可以是路径,此时会生成日期+随机码生成的图片名。
- */
- function base64ToImg($base64Str='' ,$pathOrName='')
- {
- //保存base64字符串为图片 ......
- if (preg_match('/^/', $base64Str, $imginfo))
- {
- $imgContent = str_replace($imginfo[0], '', $base64Str);
- //检查内容是否符合base64格式,
- if (!preg_match('/^[a-zA-Z0-9\+\/\=]+$/', $imgContent)) return false; //非正常base64
- #$imginfo = Array ( [0] => [1] => jpeg )
- //生成新名字
- $newImgName = $pathOrName;
- $ext = strtolower(strrchr($pathOrName , '.'));
- if( (empty($ext) || !in_array($ext,['.jpg','.jpeg', '.png','.bmp','.gif'])) && !empty($imginfo[1])) {
- $ext = $imginfo[1];
- $newImgName = date ( 'YmdHis' ) . random ( 2 ) . random ( 2 ) . '.' . $ext;
- $newImgName = rtrim ( $pathOrName, '/' ) . '/' . $newImgName;
- }
- $dir = dirname($newImgName);
- if(!is_dir($dir)) mkdirs($dir); //创建目录
- if(@file_put_contents($newImgName, base64_decode($imgContent)) ){
- return $newImgName;
- }
- }
- return false;
- }
其实base64挺方便的,只是生成的图片体积挺大的,最好使用压缩函数再压一次。
转载请注明本页网址:
http://www.vephp.com/jiaocheng/72.html