html5將圖片轉(zhuǎn)換成base64代碼

我們?yōu)槭裁匆褕D片轉(zhuǎn)換成base64代碼埂奈?

base64是一種網(wǎng)絡(luò)上常用的8bit字節(jié)代碼的編碼方式,base64可以用于http環(huán)境下傳遞較長的標(biāo)識信息善茎,同時可以放在url當(dāng)中使用晌涕,因?yàn)閎ase64不懼可讀性,所以具有一定的加密功能盒粮。
將圖片轉(zhuǎn)換成base64代碼可以減少http請求,因?yàn)閳D片可以以字符編碼的形式直接傳遞到客戶端奠滑,而文件形式都需要進(jìn)行http請求丹皱。但是也會有一個小缺點(diǎn)妒穴,就是圖片編碼化base64的時候大小會變大,但是通過gzip優(yōu)化以后基本差不多摊崭。所以在應(yīng)用的過程當(dāng)中較小的圖片可以直接編碼成base64讼油,較大的圖片則不建議如此使用。

html5如何將圖片轉(zhuǎn)換成base64呢簸?

html5如果要將圖片轉(zhuǎn)換成base64需要使用到一個html5的接口FileReader.readAsDataURL()接口說明,這個接口可以將文件轉(zhuǎn)換成base64編碼格式汁讼,并且再以data:URL的形式展現(xiàn)出來。

示例程序

下面的代碼是示例程序阔墩,創(chuàng)建一個新html文件,然后將代碼復(fù)制粘貼使用支持html5的瀏覽器打開即可查看效果瓶珊。

<!Doctype html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>html5 image to base64</title>
    </head>
    <body>
        <script type="text/javascript">
        window.onload = function(){ 
        // 抓取上傳圖片啸箫,轉(zhuǎn)換代碼結(jié)果,顯示圖片的dom
        var img_upload=document.getElementById("img_upload");
        var base64_code=document.getElementById("base64_code");
        var img_area=document.getElementById("img_area");
        // 添加功能出發(fā)監(jiān)聽事件
        img_upload.addEventListener('change',readFile,false);}
        function readFile(){
            var file=this.files[0];
            if(!/image\/\w+/.test(file.type)){ 
                alert("請確保文件為圖像類型"); 
                return false; 
            }
            var reader=new FileReader();
            reader.readAsDataURL(file);
            reader.onload=function(){
                base64_code.innerHTML = this.result; 
                img_area.innerHTML = '<div>圖片img標(biāo)簽展示:</div><img src="'+this.result+'" alt=""/>'; 
            }
        }
        </script>
        <input type="file" id="img_upload"/>
        <textarea id="base64_code" rows="30" cols="360"></textarea>
        <p id="img_area"></p>
    </body>
</html>
html5圖片轉(zhuǎn)換base64代碼

程序的設(shè)計(jì)思路

1.創(chuàng)建三個html標(biāo)簽伞芹,input用來上傳圖片忘苛,textarea用來顯示base64代碼,因?yàn)閎ase64代碼內(nèi)容很多所以使用textarea標(biāo)簽唱较,p標(biāo)簽用來顯示圖片扎唾。
2.使用js調(diào)用html5的FileReader.readAsDataURL()的API,聲明三個變量用于控制圖片上傳南缓,base64代碼顯示以及圖片的顯示胸遇。
3.img_upload.addEventListener('change',readFile,false);添加一個監(jiān)聽事件,如果上傳文件發(fā)生變化就執(zhí)行readFile函數(shù)汉形。
4.readFile函數(shù)的內(nèi)容就是調(diào)用接口纸镊,將圖片轉(zhuǎn)換成base64再輸出。
5.在執(zhí)行轉(zhuǎn)換和輸出之前先判斷一下上傳文件是不是圖片概疆。

代碼解析及注意

1.var file=this.files[0];這里是抓取到上傳的對象逗威。
2.this.result這個result是FileReader.readAsDataURL()接口當(dāng)中轉(zhuǎn)換完圖片輸出的base64結(jié)果存放在result當(dāng)中。在代碼當(dāng)中添加console.log(reader);查看一下FileReader對象就可以看到岔冀。(reader是我自己起的對象的名稱)

FileReader.png

我使用html5將圖片轉(zhuǎn)換成base64代碼的目的主要是想將圖片寫入到瀏覽器本地的數(shù)據(jù)當(dāng)中來使用凯旭,上傳的時候,再嘗試恢復(fù)出來上傳圖片使套。目的是為了減少本地瀏覽器應(yīng)用和服務(wù)器的數(shù)據(jù)通信罐呼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市童漩,隨后出現(xiàn)的幾起案子弄贿,更是在濱河造成了極大的恐慌,老刑警劉巖矫膨,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件差凹,死亡現(xiàn)場離奇詭異期奔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)危尿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門呐萌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谊娇,你說我怎么就攤上這事肺孤。” “怎么了济欢?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵赠堵,是天一觀的道長。 經(jīng)常有香客問我法褥,道長茫叭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任半等,我火速辦了婚禮揍愁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘杀饵。我一直安慰自己莽囤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布切距。 她就那樣靜靜地躺著朽缎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蔚舀。 梳的紋絲不亂的頭發(fā)上饵沧,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天晃财,我揣著相機(jī)與錄音匿刮,去河邊找鬼。 笑死事示,一個胖子當(dāng)著我的面吹牛礼患,可吹牛的內(nèi)容都是我干的是钥。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼缅叠,長吁一口氣:“原來是場噩夢啊……” “哼悄泥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起肤粱,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤弹囚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后领曼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸥鹉,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛮穿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了毁渗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片践磅。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖灸异,靈堂內(nèi)的尸體忽然破棺而出府适,到底是詐尸還是另有隱情,我是刑警寧澤肺樟,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布檐春,位于F島的核電站,受9級特大地震影響么伯,放射性物質(zhì)發(fā)生泄漏喇聊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一蹦狂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧朋贬,春花似錦凯楔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至糠亩,卻和暖如春虐骑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赎线。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工廷没, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人垂寥。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓颠黎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親滞项。 傳聞我的和親對象是個殘疾皇子狭归,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容