国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

javascript - 如何不使用插件用canvas將div中的內容轉為一張圖片。

瀏覽:94日期:2022-12-07 11:22:29

問題描述

網上不少人提到用canvas,但是關鍵的內容轉換部分好像大多是用插件去輔助完成,而找到的僅有的一個不依賴插件的示例卻又運行出錯。想請教大神如何不使用插件將p中的內容轉為一張圖片~~

問題解答

回答1:

不是說用插件不可以,而是說,你知不知道,插件它內部又是用的什么原理實現的呢?是否明白大概的原理和邏輯?插件并不能算一種實現方法啊!插件只是一種解決方案!或許你自己寫,實現方法用的和插件是一樣的!

回到問題,把p轉成圖片,這個工作是否可行,工作量是多少,你是否有意識?從可行性上將,有插件可以實現,那說明在現有前端領域是可行的。那實現原理是什么呢?

你首先要想到的是,前端代碼是依托在瀏覽器里運行的。那好,我們第一個要想到的是,瀏覽器是否直接提供里這種 API 呢?瀏覽器 API 找什么? 找 BOM DOM的文檔啊。據我所知,有firefox好像可以把某個節點當某個元素的背景,在 css 中發明了 background: -moz-element() 的語法,并沒有類似截屏的 API。

你也提到了 canvas。做開發的,最好要保持好奇心。你可以很淺地去了解,這種插件他們是如何完成的。你沒必要知道完成這個功能的所有細節,但是你要知道這個實現原理為什么可行。

OK,canvas怎么畫p呢?canvas給了你處理像素的能力,理論上你可以畫任何東西。插件的做法就是讀取p以及p的style樣式,自己在canvas上畫出p,然后遞歸p的子節點。好,這個工作簡單嗎?肯定不簡單!哪個大神可以徒手造輪子?然后把造出來的輪子貼到這個問題地下給你做回答?哪個大神能把你教會?

你和大神的差距不在于大神能徒手寫 html2canvas,而是大神遇到問題能清晰地分析。

當然,我也不是大神,只是看到這種問題就忍不住要吐槽。

回答2:

你需要先將p轉成svg,然后再將svg轉成canvas,不過中間有幾個注意的點:

1.html轉svg的時候請注意其中不能有像input這樣的控件元素,不然會轉失敗;

2.在html轉svg的過程中需要先將html元素的樣式全部遍歷轉成內聯樣式然后再轉svg,不然你可能看到一片空白。

回答3:

其實你說的這種需求。可以轉個彎

javascript - 如何不使用插件用canvas將div中的內容轉為一張圖片。可以先截圖 然后粘貼到input中 綁定一個input的粘貼 paste 事件然后 event.clipboardData.items 用 var img = new Image() 讀出來最后放在 canvas 里面 用context.dramImage(img,0,0) var url = context.toDataURL(’image/png’) 這不就是一個圖片了嗎 最后用 const a = document.createElement(’a’) a.setAttribute(’download’,true) a.setAttribute(’href’,url) a.click() 圖片就下載下來了 :)

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 国产一区二区fc2ppv在线播放 | 一级在线观看视频 | 亚洲国产精品一区二区久 | 国产中的精品一区的 | 亚洲清纯自偷自拍另类专区 | 成人男女啪啪免费观看网站 | 国产区一区二 | 亚洲欧美在线精品一区二区 | 国产特黄特色的大片观看免费视频 | 禁止18周岁进入免费网站观看 | 波多野结衣视频在线观看地址免费 | 台湾三级毛片 | 亚洲 欧美 精品专区 极品 | 一级毛片看一个 | 久久精品在线视频 | 欧美最爽乱淫视频播放黑人 | 亚洲福利影院 | 久久精品香蕉视频 | 国产精品区一区二区免费 | 欧美日本一二三区 | 久9精品视频 | 日本三级一区二区三区 | 精品久久久中文字幕二区 | 国产一级真人毛爱做毛片 | 亚洲国产成人私人影院 | 国产99久久亚洲综合精品 | 欧美日韩在线观看视频 | 亚洲精品一区二区三区四区 | 国产精品久久国产三级国电话系列 | 国产精品久久久99 | 久久99国产精品久久 | 男人操美女 | 黄色毛片国产 | 自拍三级 | 一个人看的日本www的免费视频 | 成人性视频免费网站 | 在线免费观看亚洲视频 | 制服丝袜在线视频香蕉 | 美女18一级毛片免费看 | 欧洲女同互慰在线视频 | 成人免费观看网欧美片 |