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

vue截圖轉(zhuǎn)base64轉(zhuǎn)文件File異步獲取方式

 更新時間:2024年03月07日 09:53:07   作者:汪小敏同學  
這篇文章主要介紹了vue截圖轉(zhuǎn)base64轉(zhuǎn)文件File異步獲取方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

vue截圖轉(zhuǎn)base64轉(zhuǎn)文件File異步獲取

import html2canvas from "html2canvas";
export   function  base64ImgtoFile(dataurl, filename = 'file') {
    let arr = dataurl.split(',')
    let mime = arr[0].match(/:(.*?);/)[1]
    let suffix = mime.split('/')[1]
    let bstr = atob(arr[1])
    let n = bstr.length
    let u8arr = new Uint8Array(n)
    while (n--) {
      u8arr[n] = bstr.charCodeAt(n)
    }
    return new File([u8arr], `${filename}.${suffix}`, {
      type: mime
    })
  }
 
 
  export   function toImages(imageTofile) {
    return new Promise((resolve, reject) => {
      html2canvas(imageTofile, {
        backgroundColor: null,
        useCORS: true 
      }).then((canvas) => {
        const url = canvas.toDataURL('image/png');
          resolve(base64ImgtoFile(url))
      }).catch((err) => {
        reject(err)
      })
    })
  }
 
// 調(diào)用  

  toImage() {
      let that=this;

       toImages(this.$refs.imageTofile).then((imgFileRaw) => {
      that.imgFileRaw = base64ImgtoFile(this.htmlUrl);

    }).catch((error) => {
      that.imgFileRaw = null;

    });

    },

vue中base64和file文件類型互相轉(zhuǎn)換

如圖需求,上傳文件后要求支持圖片的預覽,裁剪,放大和縮小,利用vue-cropper實現(xiàn),elemeng-ui的上傳組件之后是file文件類型,需要轉(zhuǎn)換成base64在右側(cè)區(qū)域進行展示預覽。

             // 組件dom結(jié)構(gòu),on-change鉤子函數(shù)綁定
                    <el-upload
                    class="upload-demo"
                    drag
                    :show-file-list="false"
                    :auto-upload="false"
                    action="https://jsonplaceholder.typicode.com/posts/"            
                    :on-change="previewImage"
                    multiple>
                    <div v-if="!loading" class="el-upload__text" style="font-size: 16px;color: #68718C;">將圖片拖到此處,或<em>點擊上傳</em>或拍照</div>
                </el-upload>

file轉(zhuǎn)base64,下圖代碼中的file參數(shù)為el-upload上傳組件中鉤子函數(shù)的file參數(shù)

            var URL = null
            if (window.createObjectURL !== undefined) {
                URL = window.createObjectURL(file.raw)
            } else if (window.URL !== undefined) {
                URL = window.URL.createObjectURL(file.raw)
            } else if (window.webkitURL !== undefined) {
                URL = window.webkitURL.createObjectURL(file.raw)
            }
            this.option.img = URL
//option為組件vue-cropper中綁定的data值,img獲得轉(zhuǎn)化后的base64格式的URL就可以在cro-pperjs中進行展示

預覽使用cropper組件的鉤子函數(shù)

        clip(){//對圖片進行裁剪
            this.$refs.cropper.getCropData((data) => {
                this.localUrl = data //img的src屬性指定locaUrl就可以實現(xiàn)預覽
                console.log(data,'裁剪之后的圖片地址')
                sessionStorage.setItem('imageToBase64',this.localUrl)
                // this.subFileList = this.dataURLtoFile(this.localUrl, this.file.name)
            })             
        },

做的寧外一個需求也是肖像上傳,需要在本地實現(xiàn)預覽功能,同時后臺接口傳遞的是file文件類型,傳參方式使用的FormData表單形式

預覽的還是使用vue-cropper組件,效果如圖,轉(zhuǎn)化代碼如下

        // base64轉(zhuǎn)file,dataurl為base64地址,filename為文件名稱,自定義即可
        dataURLtoFile(dataurl, filename) {
            let arr = dataurl.split(',');
            let mime = arr[0].match(/:(.*?);/)[1];
            let bstr = atob(arr[1]);
            let n = bstr.length; 
            let u8arr = new Uint8Array(n);
            while(n--){
                u8arr[n] = bstr.charCodeAt(n);
            }
            return new File([u8arr], filename, {type:mime}, {uid: 1111111111111});
        },

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 利用vue3仿蘋果系統(tǒng)側(cè)邊消息提示效果實例

    利用vue3仿蘋果系統(tǒng)側(cè)邊消息提示效果實例

    這篇文章主要給大家介紹了關(guān)于如何利用vue3仿蘋果系統(tǒng)側(cè)邊消息提示效果的相關(guān)資料,文中通過實例代碼以及圖文介紹的非常詳細,對大家學習或者使用vue3具有一定的參考學習價值,需要的朋友可以參考下
    2021-12-12
  • vue element-ui讀取pdf文件的方法

    vue element-ui讀取pdf文件的方法

    這篇文章主要介紹了vue element-ui讀取pdf文件的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Vue中@change、@input和@blur的區(qū)別及@keyup介紹

    Vue中@change、@input和@blur的區(qū)別及@keyup介紹

    這篇文章主要給大家介紹了關(guān)于Vue中@change、@input和@blur的區(qū)別及@keyup介紹的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2023-02-02
  • Vue Router路由守衛(wèi)超詳細介紹

    Vue Router路由守衛(wèi)超詳細介紹

    路由守衛(wèi),簡單理解來說就是,當用戶要進行一些操作時,我需要用戶的一些信息或數(shù)據(jù)或行為,我判斷過后,才會同意用戶進行操作,說到這里,我想大家心里都或多或少有點理解了吧
    2023-01-01
  • Vue infinite update loop的問題解決

    Vue infinite update loop的問題解決

    這篇文章主要介紹了Vue "...infinite update loop..."的問題解決,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04
  • vue項目中openlayers繪制行政區(qū)劃

    vue項目中openlayers繪制行政區(qū)劃

    這篇文章主要為大家詳細介紹了vue項目中openlayers繪制行政區(qū)劃,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • Vue插件實現(xiàn)過程中遇到的問題總結(jié)

    Vue插件實現(xiàn)過程中遇到的問題總結(jié)

    隨著Vue.js越來越火,Vue.js 的相關(guān)插件也在不斷的被貢獻出來,數(shù)不勝數(shù),這篇文章主要給大家介紹了關(guān)于Vue插件實現(xiàn)過程中遇到的問題,需要的朋友可以參考下
    2021-08-08
  • vue鍵盤事件點擊事件加native操作

    vue鍵盤事件點擊事件加native操作

    這篇文章主要介紹了vue鍵盤事件點擊事件加native操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vue3向數(shù)組插入一條自定義數(shù)據(jù)實現(xiàn)方式

    vue3向數(shù)組插入一條自定義數(shù)據(jù)實現(xiàn)方式

    這篇文章主要介紹了vue3向數(shù)組插入一條自定義數(shù)據(jù)實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-09-09
  • 如何利用Vue元素指令自動合并tailwind類名

    如何利用Vue元素指令自動合并tailwind類名

    文章介紹了如何在Vue項目中使用tailwind-merge庫通過自定義指令自動合并Tailwind CSS類名,以解決樣式?jīng)_突和提高代碼的可維護性,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2026-03-03

最新評論

丹棱县| 台南县| 吉安市| 三门县| 天全县| 蓬溪县| 永兴县| 龙岩市| 涟源市| 阿克苏市| 泽库县| 富裕县| 晋州市| 准格尔旗| 黄梅县| 永泰县| 阳谷县| 青岛市| 峨眉山市| 东阿县| 搜索| 惠州市| 北安市| 象州县| 涿州市| 门头沟区| 保康县| 长治市| 寿阳县| 西安市| 台南市| 翁源县| 金溪县| 宣威市| 城口县| 夏邑县| 夏河县| 子洲县| 万山特区| 北流市| 富源县|