PHP base64
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                PHP base64
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            <?php
header('Content-type:text/html;charset=utf-8');
function image_base64($image_file) {// getimagesize獲取圖片的屬性值返回一個數組,索引0對應圖片寬度,索引1對應圖片高度/** getimagesize獲取圖片的屬性值返回一個數組,這里 $image_info['mime'] 對應的值就是字符串 "image/jpeg"* 索引 0 給出的是圖像寬度的像素值* 索引 1 給出的是圖像高度的像素值* 索引 2 給出的是圖像的類型,返回的是數字,其中1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM* 索引 3 給出的是一個寬度和高度的字符串,可以直接用于 HTML 的 <image> 標簽* 索引 bits 給出的是圖像的每種顏色的位數,二進制格式* 索引 channels 給出的是圖像的通道值,RGB 圖像默認是 3* 索引 mime 給出的是圖像的 MIME 信息,此信息可以用來在 HTTP Content-type 頭信息中發送正確的信息,如:* header("Content-type: image/jpeg");*/$image_info = getimagesize ( $image_file );// 組合成base64編碼// chunk_split 將 base64_encode() 的輸出轉換成符合 RFC 2045 語義的字符串。它會在每 chunklen(默認為 76)個字符后邊插入 end(默認為空格 " ")// 此處不用chunk_split函數處理也行,對于<img>標簽顯示圖像沒影響// 字符串雙引號中數組用{}擴起來,即可在字符串中正常顯示其中內容$base64_image = "data:{$image_info['mime']};base64," . chunk_split ( base64_encode ( file_get_contents ( $image_file ) ) );return $base64_image;
}$image_file = './test.jpg';$base64_image = image_base64 ( $image_file );
// 獲取到的base64碼為 data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEBLAEsAAD/4RVFRXhpZgAATU0AKgAAAAgACgEPAA......
?>
<img src="<?php echo $base64_image;?>" /><?php/*** 反編譯data/base64數據流并創建圖片文件** @param string $base64_image  base64數據流* @param string $put_url       存放圖片文件目錄,路徑后不用加斜杠/* @param string $fileName      圖片文件名稱(不含文件后綴)* @return mixed                返回可在瀏覽器訪問的圖片地址或布爾類型*/
function base64DecImg($base64_image, $put_url, $fileName) {// 瀏覽器訪問當前路徑URL$__URL__ = 'localhost/test/';try {// 分割base64碼,獲取頭部編碼部分$headData = explode ( ';', $base64_image );// 再獲取編碼前原文件的后綴信息$postfix = explode ( '/', $headData [0] );// 判斷源文件是否是圖片if (strstr ( $postfix [0], 'image' )) {// 判斷是否是jpeg圖片,并賦正確后綴名$postfix = $postfix [1] == 'jpeg' ? 'jpg' : $postfix [1];// 拼接要合成圖片的完整路徑及擴展名// DIRECTORY_SEPARATOR目錄分隔符,由于win與linux目錄分隔符不同,PHP根據當前系統返回正確目錄分隔符。windows返回\ 或 /,linux返回/$file_url = $put_url . DIRECTORY_SEPARATOR . $fileName . '.' . $postfix;// 去掉$base64_image碼中頭部內容,獲取文件編碼部分內容$base64Arr = explode(",",$base64_image);// 經base64_decode解碼$image_decode = base64_decode ($base64Arr[1] );try {// 合成文件file_put_contents ( $file_url, $image_decode );// 返回可在瀏覽器訪問的圖片地址return $__URL__ . $file_url;} catch ( Exception $e ) {return false;}}} catch ( Exception $e ) {return false;}return false;
}
// ./表示當前頁面的所在路徑
echo base64DecImg ( $base64_image, "./", "test2" );
?>data:image/*;base64 就是 Data URI scheme。
Data URI scheme是在RFC2397中定義的,目的是將一些小的數據,直接嵌入到網頁中,從而不用再從外部文件載入
例如:
data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEBLAEsAAD/4RVFRXhpZgAATU0AKgAAAAgACgEPAA......
base64碼中,data表示取得數據的協定名稱,image/jpeg 是數據類型名稱,base64 是數據的編碼方法,逗號后面就是這個文件base64編碼后的數據目前,Data URI scheme支持的類型有:
data:,文本數據
data:text/plain,文本數據
data:text/html,HTML代碼
data:text/html;base64,base64編碼的HTML代碼
data:text/css,CSS代碼
data:text/css;base64,base64編碼的CSS代碼
data:text/javascript,Javascript代碼
data:text/javascript;base64,base64編碼的Javascript代碼
data:image/gif;base64,base64編碼的gif圖片數據
data:image/png;base64,base64編碼的png圖片數據
data:image/jpeg;base64,base64編碼的jpeg圖片數據
data:image/x-icon;base64,base64編碼的icon圖片數據
base64簡單地說,它把一些 8-bit 數據翻譯成標準 ASCII 字符,網上有很多免費的base64 編碼和解碼的工具  
                        
                        
                        ?
轉載于:https://www.cnblogs.com/dreamhome/p/6010622.html
總結
以上是生活随笔為你收集整理的PHP base64的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: iOS面试必看,最全梳理
- 下一篇: jdbc java数据库连接 3)Sta
