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

Vue使用html2canvas實現(xiàn)截取圖片并保存

 更新時間:2023年12月21日 15:28:34   作者:我是ed  
html2canvas是一個JavaScript庫,它可以將HTML元素轉(zhuǎn)換為Canvas元素本文將介紹一下Vue如何使用html2canvas實現(xiàn)截取圖片并保存功能,需要的可以參考下

html2canvas 簡介

html2canvas是一個JavaScript庫,它可以將HTML元素轉(zhuǎn)換為Canvas元素。具體來說,它可以將整個頁面或特定的HTML元素轉(zhuǎn)換為一幅圖像,這對于創(chuàng)建屏幕截圖、生成PDF文件或在上創(chuàng)建可編輯的圖像非常有用。

html2canvas 安裝

安裝 html2canvas 很簡單,只需要一個簡單的命令即可。

npm install html2canvas --save

等待命令執(zhí)行完成就可以了。

html2canvas 使用

使用的時候也非常的方便。首先在需要使用的地方進行引入。

import html2canvas from 'html2canvas'

在 Vue 組件中使用 html2canvas 將 HTML 元素轉(zhuǎn)換為 canvas:

methods: {  
  convertToCanvas() {  
    const element = this.$refs.element // 獲取要轉(zhuǎn)換的HTML元素  
    html2canvas(element).then(canvas => {  
      // 在這里可以對canvas進行操作,例如將其添加到頁面中或保存為圖片等  
      // 例如:this.$refs.canvasContainer.appendChild(canvas)  
    })  
  }  
}

在模板中添加要轉(zhuǎn)換的HTML元素和調(diào)用方法的引用:

<template>  
  <div>  
    <div ref="element">要轉(zhuǎn)換的HTML元素</div>  
    <button @click="convertToCanvas">轉(zhuǎn)換為Canvas</button>  
    <div ref="canvasContainer"></div>  
  </div>  
</template>

當(dāng)用戶點擊按鈕時,convertToCanvas方法將被調(diào)用,它將獲取要轉(zhuǎn)換的HTML元素并使用html2canvas將其轉(zhuǎn)換為canvas。轉(zhuǎn)換完成后,可以在then回調(diào)函數(shù)中對canvas進行操作,例如將其添加到頁面中或保存為圖片等。

案例:保存縮略圖

之前在項目里面寫過一個功能,就是把頁面保存成縮略圖展示。需要獲取這個頁面的截圖,然后把截圖數(shù)據(jù)發(fā)送給后端,后端保存起來,然后查詢列表的時候后端返回保存的縮略圖進行展示。就是引用上面的步驟:

    // 獲取截圖
    getPicture() {
      html2canvas(this.$refs.panelPage).then(canvas => {
        // 獲取生成的圖片的url,并設(shè)置為png格式
        const imgUrl = canvas.toDataURL("images/png");
        let base64Data = imgUrl.split(",")[1];
        let binaryData = atob(base64Data);
        let uint8Array = new Uint8Array(binaryData.length);
        for (let i = 0; i < binaryData.length; i++) {
          uint8Array[i] = binaryData.charCodeAt(i);
        }
        // 獲取blob文件流
        let blob = new Blob([uint8Array], { type: "image/png" });
        // 文件流轉(zhuǎn)文件
        let file = new File([blob], "filename.png", {
          type: "image/png",
        });
        let fd = new FormData()
        fd.append('file', file)
        
        // 請求后端數(shù)據(jù)接口
        coverUpload(fd) 
      })
    },

上面獲取了截圖之后調(diào)用請求接口的方法就OK了。

這樣就可以把頁面的截圖獲取下來,然后保存縮略圖到后端。但是在實際使用上發(fā)現(xiàn)一個大問題,就是我引用的網(wǎng)絡(luò)圖片獲取截取不下來。于是找了一下原因:是因為跨域的問題導(dǎo)致覺得不安全,就沒有截取。

解決這個問題也很簡單,配置一下允許跨域,上面代碼改一下:

    // 獲取截圖
    getPicture(id) {
      html2canvas(this.$refs.panelPage, {
        useCORS: true,  // 開啟跨域
      }).then(canvas => {
        // 獲取生成的圖片的url,并設(shè)置為png格式
        const imgUrl = canvas.toDataURL("images/png");
        let base64Data = imgUrl.split(",")[1];
        let binaryData = atob(base64Data);
        let uint8Array = new Uint8Array(binaryData.length);
        for (let i = 0; i < binaryData.length; i++) {
          uint8Array[i] = binaryData.charCodeAt(i);
        }
        // 獲取blob文件流
        let blob = new Blob([uint8Array], { type: "image/png" });
        // 文件流轉(zhuǎn)文件
        let file = new File([blob], "filename.png", {
          type: "image/png",
        });
        let fd = new FormData()
        fd.append('file', file)
        // 請求后端數(shù)據(jù)接口
        coverUpload(id, fd)
      })
    },

主要就是這一句代碼:useCORS: true。

但是發(fā)現(xiàn)有些還不行,為啥呢,因為他需要服務(wù)端開啟跨域 response.setHeader("Access-Control-Allow-Origin","*") ;。如果是自己的服務(wù)器的話,那改一下 nginx 的代理配置就可以了。

location /imgSource/ {
	# 加上這三行就可以了
	add_header Access-Control-Allow-Origin *;
	add_header Access-Control-Allow-Headers X-Requested-With;
	add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
	
	autoindex on;
	alias C:/Users/11466/Desktop/serve/classe/image/;
}

這樣就能截取下來了,反正我是成功了。

到此這篇關(guān)于Vue使用html2canvas實現(xiàn)截取圖片并保存的文章就介紹到這了,更多相關(guān)Vue html2canvas截圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue父組件異步如何獲取數(shù)據(jù)傳給子組件

    vue父組件異步如何獲取數(shù)據(jù)傳給子組件

    這篇文章主要介紹了vue父組件異步如何獲取數(shù)據(jù)傳給子組件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 如何使用vuex實現(xiàn)兄弟組件通信

    如何使用vuex實現(xiàn)兄弟組件通信

    這篇文章主要給大家介紹了關(guān)于如何使用vuex實現(xiàn)兄弟組件通信的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • vue如何動態(tài)給data中添加變量

    vue如何動態(tài)給data中添加變量

    這篇文章主要介紹了vue如何動態(tài)給data中添加變量問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vue中設(shè)置el-select的高度不生效問題及解決方案

    Vue中設(shè)置el-select的高度不生效問題及解決方案

    文章介紹了如何使用ElementUI框架中的el-select組件,并解決設(shè)置其高度不生效的問題,在Vue2.x中,使用/deep/關(guān)鍵字可以穿透組件作用域修改樣式;在Vue2.6+到Vue3初期,推薦使用::v-deep關(guān)鍵字;在最新的Vue3和構(gòu)建工具中,推薦使用:deep()偽類來代替::v-deep
    2025-01-01
  • vue3中使用vuex和vue-router的詳細(xì)步驟

    vue3中使用vuex和vue-router的詳細(xì)步驟

    這篇文章主要介紹了vue3中使用vuex和vue-router的步驟,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • Vue?項目運行完成后自動打開瀏覽器的方法匯總

    Vue?項目運行完成后自動打開瀏覽器的方法匯總

    這篇文章主要介紹了Vue?項目運行完成后自動打開瀏覽器的多種實現(xiàn)方法,方法一比較適用于vue3,每種方法通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2022-02-02
  • Vue 列表上下過渡效果的實例代碼

    Vue 列表上下過渡效果的實例代碼

    最近有個需求,一個列表上下移動要有簡單過渡效果。本文通過實例代碼給大家介紹Vue 列表上下過渡效果,需要的朋友可以參考下
    2019-06-06
  • 羊了個羊通關(guān)腳本Vue?node實現(xiàn)版本

    羊了個羊通關(guān)腳本Vue?node實現(xiàn)版本

    這篇文章主要為大家介紹了羊了個羊通關(guān)腳本Vue?node實現(xiàn)版本,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • 一文完全掌握Vue中的$set方法

    一文完全掌握Vue中的$set方法

    這篇文章主要給大家介紹了關(guān)于如何完全掌握Vue中$set方法的相關(guān)資料,vue中$set方法對數(shù)組和對象的處理本質(zhì)上的一樣的,對新增的值添加響應(yīng)然后手動觸發(fā)派發(fā)更新,需要的朋友可以參考下
    2023-11-11
  • vue-iview動態(tài)新增和刪除的方法

    vue-iview動態(tài)新增和刪除的方法

    這篇文章主要為大家詳細(xì)介紹了vue-iview動態(tài)新增和刪除的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06

最新評論

瑞昌市| 安远县| 罗田县| 白水县| 顺平县| 格尔木市| 黄骅市| 尼勒克县| 高台县| 左云县| 丰县| 康乐县| 肇东市| 马鞍山市| 舟山市| 油尖旺区| 安顺市| 百色市| 荣昌县| 旅游| 聊城市| 逊克县| 吉安县| 闽侯县| 古浪县| 烟台市| 海丰县| 平塘县| 定日县| 麻城市| 建昌县| 丰原市| 池州市| 天水市| 蛟河市| 银川市| 三台县| 博客| 五大连池市| 崇州市| 新晃|