首頁 > web前端 > js教程 > 如何在 JavaScript 中從 Base64 字串建立 Blob?

如何在 JavaScript 中從 Base64 字串建立 Blob?

Linda Hamilton
發布: 2024-12-19 04:25:13
原創
839 人瀏覽過

How to Create a Blob from a Base64 String in JavaScript?

在JavaScript 中從Base64 字串建立Blob

問題

您在字串中有Base64 編碼的二進位數據,並且想要建立一個包含此資料的Blob URL 並將其顯示給使用者。具體來說,目標是從Base64 字串建立Blob 對象,如下面的程式碼片段所示:

const blob = new Blob(????, {type: contentType});
const blobUrl = URL.createObjectURL(blob);
登入後複製

解決方案

將Base64 字串解碼為Blob 物件JavaScript,依照以下步驟操作:

  1. 解碼base64 data:使用atob函數將base64字串解碼為字串:

    const byteCharacters = atob(b64Data);
    登入後複製
  2. 將位元組字元轉換為位元組值:建立陣列透過取得位元組值中每個字元的字元代碼點(charCode) string:

    const byteNumbers = new Array(byteCharacters.length);
    for (let i = 0; i < byteCharacters.length; i++) {
        byteNumbers[i] = byteCharacters.charCodeAt(i);
    }
    登入後複製
  3. 建立型別字節數組:使用Uint8Array 建構子將位元組值轉換為真正的型別化位元組數組:

    const byteArray = new Uint8Array(byteNumbers);
    登入後複製
  4. 包裝在陣列中並建立Blob:透過將位元組陣列包裝在陣列中並將其傳遞給 Blob 建構函式來建立 Blob物件:

    const blob = new Blob([byteArray], {type: contentType});
    登入後複製

效能最佳化

程式碼上面功能齊全,但可以透過在處理之前將位元組字元切成更小的區塊來提高效能。

完整範例

這是一個完整的範例,從 Blob 建立影像元素:

const b64toBlob = (b64Data, contentType='', sliceSize=512) => {
  const byteCharacters = atob(b64Data);
  const byteArrays = [];

  for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
    const slice = byteCharacters.slice(offset, offset + sliceSize);

    const byteNumbers = new Array(slice.length);
    for (let i = 0; i < slice.length; i++) {
      byteNumbers[i] = slice.charCodeAt(i);
    }

    const byteArray = new Uint8Array(byteNumbers);
    byteArrays.push(byteArray);
  }

  const blob = new Blob(byteArrays, {type: contentType});
  return blob;
};

const contentType = 'image/png';
const b64Data = 'iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==';

const blob = b64toBlob(b64Data, contentType);
const blobUrl = URL.createObjectURL(blob);

const img = document.createElement('img');
img.src = blobUrl;
document.body.appendChild(img);
登入後複製

以上是如何在 JavaScript 中從 Base64 字串建立 Blob?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板