概述
PHP有内置的base64_encode与base64_decode负责进行Base64编码与解码。
一.图片base64编码
只要将图片流读取到,而后使用base64_encode进行进行编码然后拼接上前缀(data:image/png;base64,)即可。
/**
* 图片base64编码
* @param string $img
* @param bool $imgHtmlCode
* author 江南极客
* @return string
*/
function imgBase64Encode($img = '', $imgHtmlCode = true)
{
//如果是本地文件
if(strpos($img,'http') === false && !file_exists($img)){
return $img;
}
//获取文件内容
$file_content = file_get_contents($img);
if($file_content === false){
return $img;
}
$imageInfo = getimagesize($img);
$prefiex = '';
if($imgHtmlCode){
$prefiex = 'data:' . $imageInfo['mime'] . ';base64,';
}
$base64 = $prefiex.chunk_split(base64_encode($file_content));
return $base64;
}
二.图片base64解码
而解码就相对麻烦一点,因为在对图片进行base64编码的时候会加入前缀字符串,编码内会加入这些字符(data:image/png;base64,) ,解码之前需要先去掉这一串字符。
/**
* 片base64解码
* @param string $base64_image_content 图片文件流
* @param bool $save_img 是否保存图片
* @param string $path 文件保存路径
* author 江南极客
* @return bool|string
*/
function imgBase64Decode($base64_image_content = '',$save_img = false,$path=''){
if(empty($base64_image_content)){
return false;
}
//匹配出图片的信息
$match = preg_match('/^(data:s*image/(w+);base64,)/', $base64_image_content, $result);
if(!$match){
return false;
}
//解码图片内容(方法一)
/*$base64_image = preg_split("/(,|;)/",$base64_image_content);
$file_content = base64_decode($base64_image[2]);
$file_type = substr(strrchr($base64_image[0],'/'),1);*/
//解码图片内容(方法二)
$base64_image = str_replace($result[1], '', $base64_image_content);
$file_content = base64_decode($base64_image);
$file_type = $result[2];
//如果不保存文件,直接返回图片内容
if(!$save_img){
return $file_content;
}
//如果没指定目录,则保存在当前目录下
if(empty($path)){
$path = __DIR__;
}
$file_path = $path."/".date('Ymd',time())."/";
if(!is_dir($file_path)){
//检查是否有该文件夹,如果没有就创建
mkdir($file_path,0777,true);
}
$file_name = time().".{$file_type}";
$new_file = $file_path.$file_name;
if(file_exists($new_file)){
//有同名文件删除
@unlink($new_file);
}
if (file_put_contents($new_file, $file_content)){
return $new_file;
}
return false;
}
最后
以上就是纯真帅哥为你收集整理的PHP实现图片base64编码与解码的全部内容,希望文章能够帮你解决PHP实现图片base64编码与解码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复