PHP與base64

PHP與base64

1.形如:"data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA......==" 的字符串就是base64。

2.data:image/jpeg;base64,爲頭部信息,其餘爲圖片編碼。

3.使用base64_decode對編碼內容進行解碼。

4. 編碼後的數據比原始數據略長,爲原來的4/3。因爲:三個字節有24個位元,就可以剛好對應於4個Base64單元,即3個字節需要用4個Base64的可打印字符來表示。

示例---->將前臺傳來的被轉爲base64的字符串轉化爲圖片並存儲:

function base64($filestr,$filepath,$MaxSize = 300,$filetype = 'jpeg')

{ 

  //判斷上傳文件的大小

  $filesize = round(strlen($filestr)/1024/4*3,1);
  if($filesize > $MaxSize) return '傳入圖片過大'; 

  //將base64字符串中的 '/','+'替換成爲 '_','-' ,因爲PHP中base64的編碼只有0-9,a-z,A-Z,'-','_'64種。

  $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字符串"/>

就可以顯示圖片

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章