最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS將圖片轉(zhuǎn)Base64的2種方法代碼

 更新時間:2024年05月09日 11:35:19   作者:山楂樹の  
這篇文章主要給大家介紹了關于JS將圖片轉(zhuǎn)Base64的2種方法,base64 其實是一種編碼轉(zhuǎn)換方式,將ASCII字符轉(zhuǎn)換成普通文本,是網(wǎng)絡上最常見的用于傳輸8Bit字節(jié)代碼的編碼方式之一,需要的朋友可以參考下

第一種:Blob和FileReader 對象

實現(xiàn)原理:
使用xhr請求圖片,并設置返回的文件類型為Blob對象[xhr.responseType = “blob”]
使用FileReader 對象接收blob

    return new Promise(resolve => {
        let xhr = new XMLHttpRequest()
        xhr.open('get', src, true)
        xhr.responseType = 'blob'
        xhr.onload = function () {
            if (this.status == 200) {
                let blob = this.response
                let oFileReader = new FileReader()
                oFileReader.onloadend = function (e) {
                    const base64 = e.target.result
                    resolve(base64)
                }
                oFileReader.readAsDataURL(blob)
            }
        }
        xhr.send()
    })

第二種:canvas.toDataURL()

實現(xiàn)原理:
使用canvas.toDataURL()方法
需要解決圖片跨域問題 image.crossOrigin = ‘’;

return new Promise(resolve => {
        const img = new Image()
        img.crossOrigin = ''
        img.src = src
        img.onload = function () {
            const canvas = document.createElement('canvas')
            canvas.width = img.width
            canvas.height = img.height
            const ctx = canvas.getContext('2d')
            ctx?.drawImage(img, 0, 0, img.width, img.height)
            const ext = img.src.substring(img.src.lastIndexOf('.') + 1).toLowerCase()
            const dataURL = canvas.toDataURL('image/' + ext)
            resolve(dataURL)
  }

附:需要轉(zhuǎn)化的圖片很可能存在跨域問題,要么后端處理,要么前端處理。這里是使用時在vue中處理了跨域問題 

  devServer: {
    port: port,
    open: true,
    overlay: {
      warnings: false,
      errors: true
    },
    proxy: {
      '/api': {
        target: 'http://-----:8084'
        changeOrigin: true,
        ws: true,
        pathRewrite: {
 
          '^/api': ''
        }
      }
    }
  },

總結 

到此這篇關于JS將圖片轉(zhuǎn)Base64的2種方法代碼的文章就介紹到這了,更多相關JS圖片轉(zhuǎn)Base64內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • JavaScript實戰(zhàn)(原生range和自定義特效)簡單實例

    JavaScript實戰(zhàn)(原生range和自定義特效)簡單實例

    下面小編就為大家?guī)硪黄狫avaScript實戰(zhàn)(原生range和自定義特效)簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • javascript之大字符串的連接的StringBuffer 類

    javascript之大字符串的連接的StringBuffer 類

    javascript之大字符串的連接的StringBuffer 類...
    2007-05-05
  • 使用js 設置url參數(shù)

    使用js 設置url參數(shù)

    本篇文章是對使用js設置url參數(shù)的實現(xiàn)代碼進行了詳細的分析介紹,需要的朋友參考下
    2013-07-07
  • JavaScript Dom實現(xiàn)輪播圖原理和實例

    JavaScript Dom實現(xiàn)輪播圖原理和實例

    這篇文章主要為大家詳細介紹了JavaScript Dom實現(xiàn)輪播圖原理和實例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • javascript關于繼承的用法匯總

    javascript關于繼承的用法匯總

    這篇文章主要介紹了javascript關于繼承的用法,實例匯總了常見的javascript關于繼承的用法,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-12-12
  • JavaScript實現(xiàn)移動端短信驗證碼流程介紹

    JavaScript實現(xiàn)移動端短信驗證碼流程介紹

    這篇文章主要為大家詳細介紹了javascript實現(xiàn)移動端發(fā)送短信驗證碼案例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-10-10
  • taro開發(fā)微信小程序的實踐

    taro開發(fā)微信小程序的實踐

    這篇文章主要介紹了taro開發(fā)微信小程序的實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • React?diff算法面試考點超詳細講解

    React?diff算法面試考點超詳細講解

    渲染真實DOM的開銷很大,有時候我們修改了某個數(shù)據(jù),直接渲染到真實dom上會引起整個dom樹的重繪和重排。我們希望只更新我們修改的那一小塊dom,而不是整個dom,diff算法就幫我們實現(xiàn)了這點。diff算法的本質(zhì)就是:找出兩個對象之間的差異,目的是盡可能做到節(jié)點復用
    2022-12-12
  • js 三級關聯(lián)菜單效果實例

    js 三級關聯(lián)菜單效果實例

    這篇文章介紹了js 三級關聯(lián)菜單效果,有需要的朋友可以參考一下
    2013-08-08
  • JavaScript中map屬性示例詳解

    JavaScript中map屬性示例詳解

    Map對象在JavaScript中提供了一種靈活且高效的鍵值對存儲方式,它具有許多實用的方法,如set()、get()、has()和delete()等,使得操作和管理鍵值對變得更加簡單,這篇文章主要介紹了JS中map屬性,需要的朋友可以參考下
    2024-08-08

最新評論

聂荣县| 棋牌| 揭阳市| 黎川县| 天津市| 莱芜市| 平安县| 屯留县| 滦南县| 西乌| 哈密市| 临夏县| 土默特左旗| 仙游县| 辽源市| 南丰县| 万年县| 五大连池市| 韶山市| 赤壁市| 云林县| 称多县| 德兴市| 会宁县| 米泉市| 新兴县| 抚顺市| 巴楚县| 威远县| 西昌市| 广水市| 平山县| 孟州市| 郓城县| 桐乡市| 新平| 电白县| 株洲市| 苍南县| 丹棱县| 临沂市|