整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          VUE前端編程:用Html2Canvas實現html頁面轉圖片

          條APP上有個截圖分享功能,就是把文章轉成一張圖片,然后分享到各渠道中去,如微信、QQ等,非常實用,因此,打算就這項功能自己封裝為一個組件ImageGenerator,后期專門進行圖片生成,html是其中的一個源。


          頭條截圖分享的實際效果圖


          目前前端使用較多的html轉圖片的工具是Html2Canvas,考慮技術儲備和問題討論的充裕性,決定封裝一下這個工具。步驟如下:


          安裝HTML2Canvas

          按照官方要求,做安裝操作:

          npm

          npm install html2canvas


          我當時下載的是1.4.1的版本。



          這個工具有自身的一些限制,使用時要注意:

          [1] 并非真正的截圖軟件,而是根據DOM繪制出來的,其繪制能力,完全依賴于工具對DOM和對應屬性的支持和理解;

          [2] 因為使用了Canvas支持,生成圖片的區域不能再有Canvas應用,否則會干擾工具的生成,不能保證生成預期,因此,如果使用了Canvas圖表的應用這個工具不推薦使用


          封裝ImageGenerator

          這個很簡單,這里就是封裝一個組件,用于后期引入html之外的源生成圖片,同時也做一下圖片的統一顯示,從而和系統整體的設計進行配合。大致的實現思路如下:



          上圖,我們引入了工具本身,并設置的結果的顯示區。生成的結果將以節點的方式注入 #image-box 中。


          上圖,封裝了一個方法,用途是利用Html2Canvas工具獲得圖片,這里我們引入了一個組件的數據imageData用以存儲和干預生成結果。在這里,我把ImageGenerator封裝為全局組件。


          應用場景

          我們在文章的尾部加入一個share功能,點擊彈出分享設置的彈窗,實際效果如下圖所示:




          以上技術實現比較簡單,這里就不進行贅述了。上圖中,我們設置了一個生成圖像按鈕,點擊該按鈕則可以觸發我們組件中的對應操作。關鍵思路包括:

          【1】這里設置了一個封裝組件shareHandler,封裝了前導模塊和imageGenerator,這兩個模塊的顯示通過一個開關進行控制,該開關則通過圖像生成成功事件進行賦值,這樣的話,我們可以實現圖片生成后,不再顯示前導模塊,而是顯示圖片結果,即ImageGenerator。


          【2】這里有一個比較關鍵的操作是shareHandler通過觸發事件將轉換器發射到文章轉換現場,為什么用事件,還是那句話,事件對于解耦和消除組件依賴是最自然的實現。注意,這里我把imageGenerator通過引用的方式作為參數傳出了,這樣的好處是事件將轉換器代入了轉換現場,并可以攜帶回現場轉換結果。



          【3】在文章查看器,solutionViewer中,自然會訂閱事件、事件處理和取消訂閱。注意這里的事件處理,實際上是調用了轉換器中我們封裝的函數,參數則是現場取得的,這里的機制很簡單,定義要轉換div的id,作為參數傳入函數。



          那么,點擊圖像后,我們可以看到效果圖:



          點擊右鍵另存圖像,我們可以獲得一張png格式的圖片,至于后續對下載和到粘貼板的支持,大家可以自行研究和實現。



          注意事項

          實現過程中有幾個注意事項:

          【1】Canvas返回時,其長寬都是按照實際大小生成的,而我們的例子中,則要根據右抽屜式的彈窗做width=100%,height=auto的處理,這個要如何實現,就是要通過我們在imageGenerator中引入的imageData。


          【2】我們的文章顯示中,引入了文件管理的微服務,因此,文章中圖片的鏈接都是跨域的,所以,必須打開html2Canvas的跨域選項,在封裝的組件里,我是通過一共一個defaultOptions來實現這一點的。



          這個選項可以在轉換場景提供,也可提供一系列的默認值,最常用的除跨域外,還有是否允許log輸出等開關,大家感興趣可以自行查閱html2Canvas的官網。


          內容比較簡單,大家如果有這個應用場景,可以參考實現一下,有問題歡迎大家隨時交流。謝謝大家的支持。

          友們,下午好!

          都說一張美美的圖能為文章增色三分!

          那如果是一個交互的圖片樣式 + 幾張美美圖呢?這能為文章增色多少呢?

          比如這種(樣式ID:90298)

          使用這種樣式,即能有效的展示圖片,還能縮小文章空間,而且還與讀者存在互動交互,想不想知道這種樣式怎么做出來呢?

          上面兩種樣式都可以在樣式中心輸入ID搜索到。

          但是,樣式中心的原樣式,都是四張圖片滑動的,直接進行換圖就可以使用了。

          但如果要像三兒上面做的兩個樣式,一個是5張圖,一個是9張圖,就要進HTML進行修改了。

          教程一(帶圖片說明的樣式)

          進入到“HTML”模式,找到<section .........> </section>這段代碼,先選擇Ctrl+C復制。

          然后在此段代碼結尾處敲回車鍵換行,再選擇Ctrl+V粘貼。

          粘貼幾次,樣式就會在原有四張的基礎上多出幾張,胖友們可以根據自己的需求進行多次粘貼。

          教程二

          進入到“HTML”模式,找到<img src=........./>這段代碼,先選擇Ctrl+C復制,然后在此段代碼結尾處,再Ctrl+V粘貼。

          同上個樣式,粘貼幾次,樣式就會在原有四張的基礎上多出幾張,胖友們可以根據自己的需求進行多次粘貼。

          為了樣式的美感,還是有三點建議給大家。

          1、圖片請保持尺寸一致。否則會導致圖片層次不齊。

          2、尺寸請500x500以上。否則可能會使圖片不清楚。

          3、圖片大小盡可能小點。否則瀏覽時加載會不流暢。

          更多好玩樣式,請進樣式中心搜索“滾動

          好了,本次教程就到這里~bye

          字中夾著圖片,圖片也需要文字說明,文字和圖片相輔相成,就有了絢麗多彩的網頁內容。但是圖文混排的方式卻給我們存儲數據帶來不便,實際上大多數網頁是把文字和圖片分別存放在不同文件中的,在html源碼中只保存圖片的鏈接地址。

          圖文混排的網頁內容


          如上圖所示,在做數據采集時,很多朋友把文字和圖片分別下載保存,還要處理鏈接本地化轉換的問題。實際上我們也可以把圖片文件轉碼后保存在html源碼文件里,這樣用一個html文件就可以保存圖文信息了,自動采集圖文步驟如下。
          打開木頭瀏覽器項目管理窗口,創建【打開網頁】步驟,添加需要采集的頁面網址,如果添加多個網址,則可以按順序打開采集內容。

          打開網址


          然后添加最關鍵的步驟【抓取內容】,【添加】抓取內容,在彈出的【抓取元素設置】窗口,點擊【自動獲取】按鈕,瀏覽器將處于元素定位模式,鼠標移到需要抓取的元素內容上方點擊右鍵,在彈出的快捷菜單中選擇【獲取元素并返回】,成功獲取可唯一標識該元素的方法,如下圖所示,此以頁面使用元素的ID屬性定位等抓取的元素區域,設置獲取元素的【TagTextToHtml】擴展屬性,意思是把元素內容轉化為Html代碼。如有必要,可以使用同樣的方法繼續添加抓取頁面文章標題,此處不再贅述。

          獲取采集范圍元素


          抓取元素轉換成html后,就是保存數據了,創建【保存數據】步驟,勾選【保存變量文件】,選擇Htm文件格式,設置文件保存路徑。

          保存采集內容


          最后,點擊【開始測試】按鈕運行項目,當項目執行完畢后,打開設定的保存文件目錄,就可以看到自動保存和htm文件,且只有這個文件,雙擊自動調用瀏覽器打開,完整呈現圖文內容。圖片已經轉成了Base64編碼,嵌入保存在htm文件中。

          包含圖文的htm文件


          主站蜘蛛池模板: 亚洲国产成人久久综合一区77 | 国产一区二区三区视频在线观看| 亚洲av乱码一区二区三区香蕉| 美女视频免费看一区二区| 亚洲制服中文字幕第一区| 四虎精品亚洲一区二区三区| 97人妻无码一区二区精品免费 | 国产一区二区三区不卡在线看| 国产AV午夜精品一区二区三区| 夜夜爽一区二区三区精品| 日韩一区二区超清视频| 偷拍激情视频一区二区三区| 亚洲av午夜福利精品一区人妖| 久夜色精品国产一区二区三区| 国产aⅴ一区二区| 四虎一区二区成人免费影院网址 | 精品国产日韩亚洲一区91| 成人中文字幕一区二区三区| 乱子伦一区二区三区| 亚洲福利精品一区二区三区| 日韩动漫av在线播放一区| 国产精品亚洲一区二区三区久久 | 中文字幕一区在线观看视频| 色婷婷综合久久久久中文一区二区 | 久久久无码精品人妻一区| 亚洲一区中文字幕| 呦系列视频一区二区三区| 亚洲一区二区三区高清在线观看| 精品爆乳一区二区三区无码av| 中文字幕乱码一区久久麻豆樱花| 国产对白精品刺激一区二区| 亚洲色偷精品一区二区三区| 好吊妞视频一区二区| 日本一道一区二区免费看| 一区二区网站在线观看| 亚洲一区二区女搞男| 亚洲制服丝袜一区二区三区| 国产品无码一区二区三区在线| 后入内射国产一区二区| 精品一区二区三区中文字幕| 一区二区三区精密机械|