1.形如:"data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA......==" 的字符串就是base64。編碼
2.data:image/jpeg;base64,爲頭部信息,其他爲圖片編碼。code
3.使用base64_decode對編碼內容進行解碼。圖片
4. 編碼後的數據比原始數據略長,爲原來的4/3。由於:三個字節有24個位元,就能夠恰好對應於4個Base64單元,即3個字節須要用4個Base64的可打印字符來表示。字符串
示例---->將前臺傳來的被轉爲base64的字符串轉化爲圖片並存儲:io
function base64($filestr,$filepath,$MaxSize = 300,$filetype = 'jpeg')base64
{ function
//判斷上傳文件的大小sed
$filesize = round(strlen($filestr)/1024/4*3,1);
if($filesize > $MaxSize) return '傳入圖片過大'; date
//將base64字符串中的 '/','+'替換成爲 '_','-' ,由於PHP中base64的編碼只有0-9,a-z,A-Z,'-','_'64種。file
$img = str_replace(array('_','-'), array('/','+'), $filestr);
//截取base64字符串的前100個字符,由於字符串太大
$b64img = substr($img, 0, 100);
//正則匹配base64的頭信息
if (!preg_match('/^(data:\s*image\/(\w+);base64,)/', $b64img, $matches)) return '不是標準的base64';
if (count($matches) < 3) return '匹配不完整';
if (!in_array($matches[2], $filetype)) return '傳入圖片格式不正確';
$type = $matches[2];
//肯定保存文件的地址
$basedirmain = $filepath.date('YmdHis').'.'.$type;
if (!is_dir($filepath)) mkdir($filepath,0777,true);
//去掉頭信息
$img = str_replace($matches[1], '', $img);
//解碼
$img = base64_decode($img);
//保存
if (!file_put_contents($basedirmain, $img)) return '傳入圖片失敗';
return $basedirmain;
}
base64的使用
<img src="base64字符串"/>
就能夠顯示圖片