溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何實(shí)現(xiàn)html5把上傳的圖片轉(zhuǎn)成base64編碼在顯示

發(fā)布時(shí)間:2020-07-10 10:29:01 來(lái)源:億速云 閱讀:876 作者:Leah 欄目:web開發(fā)

這篇文章將為大家詳細(xì)講解有關(guān)如何實(shí)現(xiàn)html5把上傳的圖片轉(zhuǎn)成base64編碼在顯示,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

首先我們來(lái)詳細(xì)的看一看base64編碼

什么是base64編碼?

Base64是一種網(wǎng)絡(luò)上最常見的用于傳輸8Bit字節(jié)代碼的編碼方式,Base64編碼可用于在HTTP環(huán)境下傳遞較長(zhǎng)的標(biāo)識(shí)信息,同時(shí)可以放在url當(dāng)中使用(采用一種用于URL的改進(jìn)Base64編碼)。因?yàn)閎ase64不懼可讀性,即所編碼的數(shù)據(jù)不會(huì)被人用肉眼所直接看到,所以具有一定的加密功能。

為什么要把圖片轉(zhuǎn)成base64編碼?

將圖片轉(zhuǎn)換成base64編碼主要是為了用在網(wǎng)頁(yè)上減少請(qǐng)求次數(shù),我們的網(wǎng)站采用的都是http協(xié)議,而http協(xié)議是一種無(wú)狀態(tài)的連接,就是連接和傳輸后都會(huì)斷開連接節(jié)省資源。此時(shí)解決的方法就是盡量的減少http請(qǐng)求,此時(shí)base64編碼可以將圖片添加到css中,實(shí)現(xiàn)請(qǐng)求css即可下載下來(lái)圖片,減少了再次請(qǐng)求圖片的請(qǐng)求。

html5如何實(shí)現(xiàn)把上傳的圖片轉(zhuǎn)成base64編碼在顯示?

將圖片轉(zhuǎn)換成base64需要使用到一個(gè)html5的接口:FileReader.readAsDataURL()接口,這個(gè)接口可以將文件轉(zhuǎn)換成base64編碼格式,并且再以data:URL的形式展現(xiàn)出來(lái)
思路:

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

代碼如下:

<!Doctype html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>html5 圖片轉(zhuǎn)base64編碼</title>
		<style>
			* {
				margin: 0;
				padding: 0;
			}
			.demo{
				width: 100%;
				margin: 50px;
			}
		</style>
		<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];//這里是抓取到上傳的對(duì)象。
				if(!/image\/\w+/.test(file.type)) {
					alert("請(qǐng)確保文件為圖像類型");
					return false;
				}
				var reader = new FileReader();
				reader.readAsDataURL(file);
				reader.onload = function() {
					base64_code.innerHTML = this.result;
					//this.result里的這個(gè)result是FileReader.readAsDataURL()接口當(dāng)中轉(zhuǎn)換完圖片輸出的base64結(jié)果存放在result當(dāng)中
					img_area.innerHTML = '<div>圖片img標(biāo)簽展示:</div><img src="' + this.result + '" alt=""/>';
				}
			}
		</script>
	</head>

	<body>
		<div class="demo">
			<input type="file" id="img_upload" />
			<textarea id="base64_code" rows="30" cols="100"></textarea>
			<p id="img_area"></p>
		</div>
	</body>
</html>

看看效果圖:

如何實(shí)現(xiàn)html5把上傳的圖片轉(zhuǎn)成base64編碼在顯示

關(guān)于如何實(shí)現(xiàn)html5把上傳的圖片轉(zhuǎn)成base64編碼在顯示就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI