《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.snjht.com/jiaocheng/73.html
/** base64保存為圖片 * 作者:http://www.snjht.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.snjht.com/jiaocheng/72.html