html2 canvas實作瀏覽器截圖

小云云
發布: 2018-01-29 09:45:25
原創
2611 人瀏覽過

使用html2canvas實作瀏覽器截圖,必須在伺服器環境下才能實現。本文主要介紹了使用html2canvas實現瀏覽器截圖的範例程式碼的相關資料,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧,希望能幫助大家。

作用

html2canvas可以透過純JS對瀏覽器端經行截圖,但截圖的精確度還有待提高,部分css不可識別,所以在canvas中無法完美呈現原畫面樣式


/*多行溢出省略就不行,只能超出隐藏了*/
     .book_inf{
            position: relative; 
            overflow : hidden;
            text-overflow: ellipsis;
            display: -webkit-box;
            -webkit-line-clamp: 2;
            -webkit-box-orient: vertical;
        }
登入後複製

支援的瀏覽器

  1. ##Firefox 3.5+

  2. Google Chrome

  3. Opera 12+

  4. IE9+

  5. Safari 6+

基本語法


#

/*参数:
* #screenshots 所需要截图的元素id,截图后要执行的函数,
* backgroundColor 配置项背景色
* canvas为截图后返回的最后一个canvas
*/
function screenshotsImg(){
       html2canvas(document.querySelector("#screenshots"),{
            backgroundColor: 'transparent',// 设置背景透明
        }).then(canvas => {
            canvasTurnImg(canvas) //保存的图片格式转换方法
        });
    }
登入後複製

可用設定項

參數名稱類型預設值allowTaintbackground#heightletterRenderingfalseWhether to render each letter seperately. Necessary if letter-spacing is used.---在設定了字間距的時候有用loggingbooleanfalseWhether to log events in the console.---在console.log()中輸出訊息 #proxystringundefinedUrl to the proxy which is to be used for loading cross-origin images. If left empty, cross-origin images won't beges loaded.---代理地址taintTestbooleantrueWhether to test each image if it taints the canvas before drawing them---是否在渲染前測試圖片timeoutnumber0Timeout for loading images, in milliseconds. Setting it to 0 will result in no timeout.---圖片載入延遲,預設延遲為0,單位毫秒numberboolean
##描述
booleanfalseWhether to allow cross-origin images to taint the canvas---允許跨網域
string#fffCanvas background color, if none is specified in DOM. Set undefined for transparent---canvas的背景顏色,如果沒有設定預設白色此處被坑,我改為backgroundColor可用
numbernull Define the heigt of the canvas in pixels. If null, renders with full height of the window.---canvas高度設定
##width
#nullDefine the width of the canvas in pixels. If null, renders with full width of the window.---canvas寬度#useCORS
falseWhether to attempt to load cross-origin images as CORS served, before reverting back to proxy--跨域代理

設定圖片格式

1、直接從canvas直接擷取圖片元資料


  // 图片导出为 png 格式
        var type = 'png';
        var imgData = canvas.toDataURL(type);
登入後複製

2、將mime-type改為image/octet-stream,強制讓瀏覽器直接download


#

/**
 * 获取mimeType
 * @param  {String} type the old mime-type
 * @return the new mime-type
 */
var _fixType = function(type) {
    type = type.toLowerCase().replace(/jpg/i, 'jpeg');
    var r = type.match(/png|jpeg|bmp|gif/)[0];
    return 'image/' + r;
};
   
// 加工image data,替换mime type
imgData = imgData.replace(_fixType(type),'image/octet-stream');
登入後複製

3、圖片download到本地


/**
 * 在本地进行文件保存
 * @param  {String} data     要保存到本地的图片数据
 * @param  {String} filename 文件名
 */
var saveFile = function(data, filename){
    var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
    save_link.href = data;
    save_link.download = filename;
   
    var event = document.createEvent('MouseEvents');
    event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    save_link.dispatchEvent(event);
};
   
// 下载后的文件名
var filename = 'baidufe_' + (new Date()).getTime() + '.' + type;
// download
saveFile(imgData,filename);
登入後複製
相關推薦:

html5瀏覽器截圖的範例#

以上是html2 canvas實作瀏覽器截圖的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!