html2canvas截圖的清晰度問題

首先請關注官方更新
——————————————————————————————————————
html2canvas這個東西的作用是生巡,可以在頁面里截圖冗栗,無論是整張頁面,乃至單個的div,都可以依照原本的畫風生成canvas楚午,然后我們使用toDataURL這個方法就可以生成這個頁面或者div的圖片了峡碉。

作者上次更新就在今年,但并沒有關注到一個問題:使用這樣的方法生成的canvas溜腐,畫質是否清晰?我們知道設備的devicePixelRatio決定了canvas的清晰度, 文中解決這個問題的核心方法是放大canvas然后縮小顯示到原比例瓜喇。于是我在html2canvas.js中做了如下改動:

var node = ((nodeList === undefined) ? [document.documentElement] : ((nodeList.length) ? nodeList : [nodeList]))[0];
    node.setAttribute(html2canvasNodeAttribute + index, index);
    return renderDocument(node.ownerDocument, options, node.ownerDocument.defaultView.innerWidth*2, node.ownerDocument.defaultView.innerHeight*2, index).then(function(canvas) {
        if (typeof(options.onrendered) === "function") {
            log("options.onrendered is deprecated, html2canvas returns a Promise containing the canvas");
            options.onrendered(canvas);
        }
        return canvas;
    });

我只是將待畫元素的寬度與高度都乘以2挺益。然后這個設定對所有子元素都遞歸有效了。于是我們得到了一個所有待畫元素都放大一倍的canvas乘寒。
接下來肯定是要把canvas也放大才行望众。

var width = $('#earsContainer').width() ; //這是我們準備畫的div
var height =  $('#earsContainer').height() ;
html2canvas($('.earsContainer'), {
              onrendered: function(canvas) {
               //這里返回了一個canvas
              }, width : width*2 , height : height*2
           });

然后很山寨的就把我的問題解決了。
但也帶來了后續(xù)的問題:

  1. 如果子元素的左右邊距不對稱怎么辦伞辛?這個可以繼續(xù)改offsetX烂翰。
  2. 如果子元素做了translate該怎么辦?我沒正面解決這個問題蚤氏,而是在生成canvas前把這個元素的translate值增大了兩倍甘耿。
    期待日后可以看到更優(yōu)雅的解決方案。

感謝焰尾迭文章啟發(fā)了我竿滨。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末佳恬,一起剝皮案震驚了整個濱河市捏境,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌殿怜,老刑警劉巖典蝌,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異头谜,居然都是意外死亡骏掀,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門柱告,熙熙樓的掌柜王于貴愁眉苦臉地迎上來截驮,“玉大人,你說我怎么就攤上這事际度】” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵乖菱,是天一觀的道長坡锡。 經(jīng)常有香客問我,道長窒所,這世上最難降的妖魔是什么鹉勒? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮吵取,結果婚禮上禽额,老公的妹妹穿的比我還像新娘。我一直安慰自己皮官,他們只是感情好脯倒,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著捺氢,像睡著了一般藻丢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上摄乒,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天郁岩,我揣著相機與錄音,去河邊找鬼缺狠。 笑死,一個胖子當著我的面吹牛萍摊,可吹牛的內(nèi)容都是我干的挤茄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼冰木,長吁一口氣:“原來是場噩夢啊……” “哼穷劈!你這毒婦竟也來了笼恰?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤歇终,失蹤者是張志新(化名)和其女友劉穎社证,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體评凝,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡追葡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了奕短。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宜肉。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖翎碑,靈堂內(nèi)的尸體忽然破棺而出谬返,到底是詐尸還是另有隱情,我是刑警寧澤日杈,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布遣铝,位于F島的核電站,受9級特大地震影響莉擒,放射性物質發(fā)生泄漏酿炸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一啰劲、第九天 我趴在偏房一處隱蔽的房頂上張望梁沧。 院中可真熱鬧,春花似錦蝇裤、人聲如沸廷支。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽恋拍。三九已至,卻和暖如春藕甩,著一層夾襖步出監(jiān)牢的瞬間施敢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工狭莱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留僵娃,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓腋妙,卻偏偏與公主長得像默怨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子骤素,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案匙睹? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,751評論 1 92
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,104評論 25 707
  • 在線閱讀 http://interview.poetries.top[http://interview.poetr...
    程序員poetry閱讀 114,368評論 24 450
  • 為進一步加深與青年員工的交流愚屁,及時了解青年員工在工作生活中的感受,工行南充西充支行于近日舉辦全行青年員工座談會...
    南充社區(qū)網(wǎng)閱讀 490評論 0 2
  • 靜氣三分鐘痕檬。 白子多走星位霎槐,不吃虧。黑子走星位梦谜,不占便宜丘跌,所以黑子多小目和高目。星位的定式改淑。 黑的叫外勢碍岔。
    土家閱讀 155評論 0 0