欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

[點晴永久免費OA]使用原生JS腳本實現給圖片增加水印

admin
2023年4月7日 16:40 本文熱度 1418

使用原生js給圖片增加水印
支持自定義 【 水印旋轉角度、字體大小、字體顏色、稠密度… 】

效果圖

直接上代碼(含注釋)
HTML代碼

<img src="../images/birthdaybg2.jpg" id="drowsy" />

JS代碼

var drawWaterMark = {};
    drawWaterMark.init = function (objmsg) {
        var canvas = document.createElement('canvas');
        var ctx = canvas.getContext('2d');
        var img = new Image();
        img.src = objmsg.imgpath;
        img.setAttribute("crossOrigin", 'Anonymous');
        img.onload = function () {
            //繪制和圖片大小相同的canvas
            canvas.width = img.width;
            canvas.height = img.height;
            //canvas繪制圖片,0 0  為左上角坐標原點
            ctx.drawImage(img, 0, 0);
            //繪制水印
            if (objmsg.rotate != undefined && objmsg.rotate != null) {//旋轉角度[默認20]
                ctx.rotate((Math.PI / 120) * -objmsg.rotate);
            } else {
                ctx.rotate((Math.PI / 120) * -20);
            }
            var fontsize = 20;
            if (objmsg.fontsize != undefined && objmsg.fontsize != null) {//字體大小[默認20px]
                fontsize = objmsg.fontsize;
            }
            ctx.font = fontsize + "px Microsoft Yahei";
            var fontcolor = '255, 255, 255, 0.2';
            if (objmsg.fontcolor != undefined && objmsg.fontcolor != null) {//字體顏色透明度[默認白色]
                fontcolor = objmsg.fontcolor;
            }
            ctx.fillStyle = "rgba(" + fontcolor + ")";
            ctx.textAlign = "center";
            ctx.textBaseline = "middle";
            var density = 3;
            if (objmsg.density != undefined && objmsg.density != null) {//稠密度[默認3]
                density = objmsg.density            }
            for (var i = -1000; i < img.height; i += img.width / density) {
                for (var k = 0; k < img.height; k += img.width / density) {
                    var str = objmsg.str;
                    if (str.length == 1) {
                        ctx.fillText(str[0], i, k);
                    } else if(str.length==2){
                        ctx.fillText(str[0], i, k);
                        ctx.fillText(str[1], i, k + (fontsize-0+5));//多行
                    } else if (str.length == 3 || str.length > 3) {
                        ctx.fillText(str[0], i, k);
                        ctx.fillText(str[1], i, k + (fontsize - 0 + 5));//多行
                        ctx.fillText(str[2], i, k + (fontsize*2 - 0 + 5));//多行
                    }
                }
            }
            var base64 = canvas.toDataURL("image/png");//添加過水印的base64圖片
            if (objmsg.domid != undefined && objmsg.domid != null) {//id圖片
                document.getElementById(objmsg.domid).src = base64;
                //$(objmsg.domid).attr('src', base64);
            }
            if (objmsg.cb != undefined && objmsg.cb != null) {//回調函數
                objmsg.cb(base64);//回調函數
            }
        }
    }

使用

drawWaterMark.init({
        imgpath: "../images/birthdaybg2.jpg",//圖片路徑  string類型  [必傳]
        rotate: 20,//旋轉角度   int類型
        fontsize: 20,//字體大小
        fontcolor: "255, 255, 255, 0.7",//字體顏色  rgba類型
        density: 3,//稠密度
        str: ["我是水印", "2022-10-15"],    //[必傳]
        domid: "drowsy",//圖片id
        cb: function (base64) {
            console.log(base64)
        }})

配置項objmsg

objmsg = {
        imgpath: "",//圖片路徑  string類型  [必傳]
        rotate: 20,//旋轉角度   int類型  默認20
        fontsize: 20,//字體大小   默認20
        fontcolor: "",//字體顏色  rgba類型  默認 255, 255, 255, 0.2
        density: 3,//稠密度    數值越大,水印越多
        str: ["我是水印", "2022-10-15", "over"],    //水印文字 數組類型  最大三行(即lingth<=3)[必傳]
        domid: "",   //圖片dom的id   用來更換添加水印后的圖片
        cb: function (base64) { }//回調函數,可以拿到添加水印后的圖片的base64編碼
    }
參數名必填參數說明示例
imgpath圖片路徑。支持本地圖片和網絡圖片;圖片不能跨域https://img.wenhairu.com/images/2021/12/01/1xvrC.jpg
rotate旋轉角度。int類型默認2020
fontsize字體大小。默認2020
fontcolor字體顏色。reba格式,默認255,255,255,0.2255,255,255,0.2
density稠密度。數值越大,水印越多,默認33
str水印文字。數組格式,最大數組長度為3,即3行水印[“我是水印”,“2022-10-15”,“最多三行”]
domid圖片id。傳值用來替換水印圖片drowsy
cb回調函數。用來獲取添加水印后的圖片base64編碼function(base64){}

--------2022-10-17------------

發現問題:少數情況下加完水印后的base64編碼為空白圖。


該文章在 2023/4/7 16:40:51 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved