国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

圖片格式轉(zhuǎn)換(File、Blob、base64)

這篇具有很好參考價(jià)值的文章主要介紹了圖片格式轉(zhuǎn)換(File、Blob、base64)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

前言

記錄一下比較常見(jiàn)的圖片格式(File、Blob、base64)在不同的場(chǎng)景他們之間的相互轉(zhuǎn)換的方法。

一、類型簡(jiǎn)介

  • Blob

BLOB(binary large object): 二進(jìn)制大對(duì)象,是一個(gè)可以存儲(chǔ)二進(jìn)制文件的容器。 在計(jì)算機(jī)中,BLOB常常是數(shù)據(jù)庫(kù)中用來(lái)存儲(chǔ)二進(jìn)制文件的字段類型。

屬性名稱 讀/寫(xiě) 描述
size 只讀 Blob 對(duì)象中所包含數(shù)據(jù)的大小(字節(jié))。
type 只讀 一個(gè)字符串,表明該Blob對(duì)象所包含數(shù)據(jù)的MIME類型。如果類型未知,則該值為空字符串。例如 “image/png”

我們?cè)跒g覽器中輸出的Blob對(duì)象:
圖片格式轉(zhuǎn)換(File、Blob、base64)

  • File

File 對(duì)象通常是用戶在網(wǎng)頁(yè)中的一個(gè) 元素上傳文件返回的 FileList 對(duì)象,或者是拖放操作返回的 DataTransfer 對(duì)象,也可以在瀏覽器中的控制臺(tái)中自己創(chuàng)建。

屬性名稱 讀/寫(xiě) 描述
name 只讀 返回文件的名稱.由于安全原因,返回的值并不包含文件路徑 。
type 只讀 返回 File 對(duì)象所表示文件的媒體類型(MIME)。例如 PNG 圖像是 “image/png”.
lastModified 只讀 number, 返回所引用文件最后修改日期,自 1970年1月1日0:00 以來(lái)的毫秒數(shù)。
lastModifiedDate 只讀 Date, 返回當(dāng)前文件的最后修改日期,如果無(wú)法獲取到文件的最后修改日期,則使用當(dāng)前日期來(lái)替代。
size 只讀 File 對(duì)象中所包含數(shù)據(jù)的大?。ㄗ止?jié))
webkitRelativePath 只讀 返回 File 相關(guān)的 path 或 URL。

我們?cè)跒g覽器中輸出的File:
圖片格式轉(zhuǎn)換(File、Blob、base64)
可以看到它的屬性有和Blob一樣的地方,只是在Blob的基礎(chǔ)上做了擴(kuò)展

  • base64

Base64是網(wǎng)絡(luò)上最常見(jiàn)的用于傳輸8Bit字節(jié)碼的編碼方式之一,Base64就是一種基于64個(gè)可打印字符來(lái)表示二進(jìn)制數(shù)據(jù)的方法。編碼規(guī)則:把3個(gè)字節(jié)變成4個(gè)字節(jié);每76個(gè)字符加一個(gè)換行符;最后的結(jié)束符也要處理。

看一個(gè)Base64格式的圖片了解一下:
圖片格式轉(zhuǎn)換(File、Blob、base64)
可以看到,Base64格式的圖片以data開(kāi)頭,后面跟著圖片類型和圖片的基本數(shù)據(jù)

二、類型轉(zhuǎn)換

1、BLOB 與 File
  • File 轉(zhuǎn) BLOB
// 獲取文件對(duì)象
const _file = $("#file")[0].files[0];
fileToBlob(){
	const type = file.type;
	const reader = new FileReader();
	reader.readAsDataURL(file)
	reader.onload = function(e) {
	    const blob = new Blob([e.target.result], {type});
	    console.log("blob:", blob);
	    const file = blobToFile(blob, 'fileName');
         console.log('file', file);
	};
}
  • BLOB 轉(zhuǎn) File
blobToFile(blob, fileName){
	const file = new File([blob], fileName, {type: blob.type});
    return file;
}
2、Blob 與 base64
  • Blob轉(zhuǎn) base64
blobToBase64(blob){
	const reader = new FileReader();
	reader.readAsDataURL(blob);
	reader.onload = (e) => {
	  const base64 = e.target.result
	  console.log("base64", base64);
	}
}
  • base64 轉(zhuǎn) Blob
base64ToBlob(base64) {
	// 分割base64
	let arr = base64.split(',');
	// 獲取類型
	let mime = arr[0].match(/:(.*?);/)[1] || type;
	// 去掉url的頭,并轉(zhuǎn)化為byte
	let bytes = window.atob(arr[1]);
	let n = new ArrayBuffer(bytes.length);
	let u8arr = new Uint8Array(n);
	while (n--) {
	  u8arr[n] = bytes.charCodeAt(n);
	}
	return new Blob([u8arr], {type: mime});
},
3、File 與 base64
  • File 與 base64
// 獲取文件對(duì)象
const file = $("#file")[0].files[0];
fileToBase64(file){
	const reader = new FileReader();
	reader.readAsDataURL(file);
	reader.onload = function (e) {
	  // e.target.result 即為base64結(jié)果
	  console.log(e.target.result);
	};
}
  • base64 轉(zhuǎn) File
base64ToFile(base64,filename) {
	// 分割base64
	let arr = base64.split(',');
	// 獲取類型
	let mime = arr[0].match(/:(.*?);/)[1] || type;
	// 去掉url的頭,并轉(zhuǎn)化為byte
	let bytes = window.atob(arr[1]);
	let n = new ArrayBuffer(bytes.length);
	let u8arr = new Uint8Array(n);
	while (n--) {
	  u8arr[n] = bytes.charCodeAt(n);
	}
	return new File([u8arr],filename,{ type: mime });
},
4、arrayBuffer 與 base64
  • base64轉(zhuǎn)arrayBuffer
base64ToUint8Array(base64String) {
	const padding = '='.repeat((4 - base64String.length % 4) % 4);
	const base64 = (base64String + padding)
	             .replace(/\-/g, '+')
	             .replace(/_/g, '/');
	
	const rawData = window.atob(base64);
	const outputArray = new Uint8Array(rawData.length);
	
	for (let i = 0; i < rawData.length; ++i) {
	     outputArray[i] = rawData.charCodeAt(i);
	}
	return outputArray;
}
  • arrayBuffer轉(zhuǎn)base64
arrayBufferToBase64( buffer ) {
	var binary= '';
	var bytes = new Uint8Array( buffer );
	var len = bytes.byteLength;
	for (var i = 0; i < len; i++) {
	   binary += String.fromCharCode( bytes[ i ] );
	}
	return window.btoa( binary );
	
	// 簡(jiǎn)寫(xiě)(一行代碼)
	return window.btoa(String.fromCharCode(...new Uint8Array(buffer)))
}

三、擴(kuò)展

  • file轉(zhuǎn)buffer
const buffer = fileReader.readAsArrayBuffer(file)
  • file轉(zhuǎn)binary(二進(jìn)制格式)
const buffer = fileReader.readAsBinaryString(file)
  • file轉(zhuǎn)file(用于修改file的只讀屬性name、type、lastModified)
const newFile = new File([file], 'newName.wav', {type: 'audio/wav', lastModified: Date.now()})
  • blob轉(zhuǎn)blobUrl
const blob = '.....'
window.URL = window.URL || window.webkitURL;
const blobURL = window.URL.createObjectURL(blob);
  • base64操作
const arr = base64.split(',')
const type = arr[0].match(/:(.*?);/)[1] // image/jpeg
const size = window.atob(arr[1]).length
base加解密 -- 不支持中文
場(chǎng)景:由于一些網(wǎng)絡(luò)通訊協(xié)議的限制,必須對(duì)原數(shù)據(jù)進(jìn)行編碼后才可發(fā)送,后端得到后再解碼得到原數(shù)據(jù),例如,發(fā)送某些含有 ASCII 碼表中 031 之間的控制字符的數(shù)據(jù)。
base轉(zhuǎn)碼
const base64 = window.btoa('a')
base解碼
const string = window.atob(base64)

參考鏈接:
ArrayBuffer轉(zhuǎn)base64詳解:https://juejin.cn/post/6844904088811880455
JavaScript(ES6) - ArrayBuffer: https://www.jianshu.com/p/5a841d6d7cc3文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-433429.html

到了這里,關(guān)于圖片格式轉(zhuǎn)換(File、Blob、base64)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 將html字符串中的base64圖片轉(zhuǎn)換成file并上傳

    目的 解決富文本編輯器中復(fù)制粘貼的圖片 base64 字符串過(guò)長(zhǎng)導(dǎo)致無(wú)法存儲(chǔ)到數(shù)據(jù)庫(kù)的問(wèn)題 思路 通過(guò)正則 獲取html字符串中里面的所有圖片 base64 數(shù)組 然后每個(gè)圖片base64 轉(zhuǎn)成file 使用上傳文件的函數(shù) 上傳到服務(wù)器上. 將上傳后獲取到的圖片訪問(wèn)url 替換成 數(shù)據(jù)里面的 img 的 src

    2024年01月23日
    瀏覽(57)
  • 談?wù)劊篎ile、Blob、FileReader、ArrayBuffer、base64

    談?wù)劊篎ile、Blob、FileReader、ArrayBuffer、base64

    JavaScript 提供了一些 API 來(lái)處理文件或原始文件數(shù)據(jù),例如:File、Blob、FileReader、ArrayBuffer、base64 等。下面就來(lái)看看它們都是如何使用的,它們之間又有何區(qū)別和聯(lián)系。 1. Blob Blob全稱為binary large Object 即二進(jìn)制大對(duì)象,他是js中的一個(gè)對(duì)象,表示原始類似文件的數(shù)據(jù)。MDN中的解

    2024年02月09日
    瀏覽(18)
  • 將圖片轉(zhuǎn)換成Base64格式存入數(shù)據(jù)庫(kù)以及在前端頁(yè)面展示

    這個(gè)示例接口假設(shè)已經(jīng)有了一個(gè)數(shù)據(jù)庫(kù)連接池,并且已經(jīng)注入或初始化了數(shù)據(jù)源。這個(gè)接口的功能是讀取指定路徑的圖片文件,將其轉(zhuǎn)換為Base64編碼字符串,然后將其存入數(shù)據(jù)庫(kù)中??梢酝ㄟ^(guò)調(diào)用 saveImageToDB 方法來(lái)實(shí)現(xiàn)這個(gè)功能。調(diào)用該方法時(shí)需要傳入要存儲(chǔ)的圖片文件的路

    2024年02月16日
    瀏覽(21)
  • blob 和 base64 相互轉(zhuǎn)換

    1. 方法 2. 使用方法 1. 方法 2. 使用方法

    2024年02月19日
    瀏覽(21)
  • base64 字符串轉(zhuǎn)換為 Blob 對(duì)象

    在 JavaScript 中,可以使用以下代碼將 base64 字符串轉(zhuǎn)換為 Blob 對(duì)象: 其中, base64 是待轉(zhuǎn)換的 base64 字符串, type 是 Blob 對(duì)象的 MIME 類型,默認(rèn)值為 \\\'application/octet-stream\\\' 。該函數(shù)返回一個(gè) Blob 對(duì)象。 可以像下面這樣使用該函數(shù): 其中, base64Str 是待轉(zhuǎn)換的 base64 字符串, ima

    2024年02月15日
    瀏覽(25)
  • 將 base64 字符串轉(zhuǎn)換為 Blob 對(duì)象

    在 JavaScript 中,可以使用以下代碼將 base64 字符串轉(zhuǎn)換為 Blob 對(duì)象: 其中, base64 是待轉(zhuǎn)換的 base64 字符串, type 是 Blob 對(duì)象的 MIME 類型,默認(rèn)值為 \\\'application/octet-stream\\\' 。該函數(shù)返回一個(gè) Blob 對(duì)象。 可以像下面這樣使用該函數(shù): 其中, base64Str 是待轉(zhuǎn)換的 base64 字符串, ima

    2024年02月16日
    瀏覽(32)
  • 文件流互相轉(zhuǎn)換(blob轉(zhuǎn)base64,二進(jìn)制流)

    文件流互相轉(zhuǎn)換(blob轉(zhuǎn)base64,二進(jìn)制流)

    跟用input上傳文件的獲取到的差不多 用URL.createObjectURL(blob)轉(zhuǎn)化后是這樣

    2024年02月10日
    瀏覽(23)
  • js實(shí)現(xiàn)base64,url,blob之間的相互轉(zhuǎn)換

    js實(shí)現(xiàn)base64,url,blob之間的相互轉(zhuǎn)換

    一般來(lái)說(shuō)前端展示圖片會(huì)通過(guò)三種方式: url、base64、blob 1.url: 一般來(lái)說(shuō),圖片的顯示還是建議使用url的方式比較好。 2.base64: 如果圖片較大,圖片的色彩層次比較豐富,則不適合使用這種方式,因?yàn)槠銪ase64編碼后的字符串非常大,會(huì)明顯增大HTML頁(yè)面,影響加載速度。如果圖

    2023年04月27日
    瀏覽(27)
  • uni-app 支持 app端, h5端,微信小程序端 圖片轉(zhuǎn)換文件格式 和 base64

    uni-app 支持 app端 h5端,微信小程序端 圖片轉(zhuǎn)換文件格式 和 base64,下方是插件市場(chǎng)的地址 app端 h5端,微信小程序端 圖片轉(zhuǎn)換文件格式 和 base64 - DCloud 插件市場(chǎng) https://ext.dcloud.net.cn/plugin?id=13926

    2024年02月13日
    瀏覽(91)
  • js實(shí)現(xiàn)base64、url和blob之間相互轉(zhuǎn)換的三種方式

    js實(shí)現(xiàn)base64、url和blob之間相互轉(zhuǎn)換的三種方式

    Blob對(duì)象表示一個(gè)不可變、原始數(shù)據(jù)的類文件對(duì)象,Blob表示的不一定是JavaScript原生格式的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于js實(shí)現(xiàn)base64、url和blob之間相互轉(zhuǎn)換的三種方式 url 轉(zhuǎn) base64 Blob 轉(zhuǎn) url Blob 轉(zhuǎn) base64 base64 轉(zhuǎn)Blob base64 轉(zhuǎn) url 一般來(lái)說(shuō)前端展示圖片會(huì)通過(guò)三種方式:

    2024年02月03日
    瀏覽(29)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包