js中圖片加水印的方法

奮斗的七月

因?yàn)轫?xiàng)目中需要給圖片加水印陪毡,但是原生實(shí)現(xiàn)其他需要安卓和ios兩端進(jìn)行開發(fā)绪杏,成本有些大,最終選擇阿里云的圖片加水印方法進(jìn)行實(shí)現(xiàn)
阿里云的圖片加水印很方法击蹲,里面可以加文本和圖片署拟,一張圖可以加好幾種不同的水印,用起來(lái)很方法歌豺,代碼如下:

 //---圖片加水印
    setImageUrl() {

      //--要加水印的文本--地址信息
      let detailMsg = "陜西省西安市灞橋區(qū)浐灞生態(tài)區(qū)世博大道與香湖灣五路碧桂園香湖灣1號(hào)";
      let arr = [];
      if (detailMsg) {
        if (detailMsg.length > 20) {
          detailMsg = detailMsg.replace(/(.{20})/g, "$1,");
          arr = detailMsg.split(",");
          arr.reverse();
        } else {
          arr = [detailMsg];
        }
      }
      //--要加水印的文本--需要在最上面加一個(gè)時(shí)間的水印文本
      arr.push("2019-01-25 12:23:23");

      let allMsg = "?x-oss-process=image/resize,w_800,h_800";
      let megFirst = "/watermark,type_d3F5LXplbmhlaQ,size_18,text_";
      let megLast = ",color_FFFFFF,shadow_50,t_100,g_se,x_10,y_";
      for (let index = 0; index < arr.length; index++) {
        const element = arr[index];
        let tempBase64 = getBase64(element);
        tempBase64 = tempBase64.replace(/[+]/g, "-");
        tempBase64 = tempBase64.replace(/\//g, "_");
        allMsg = allMsg + megFirst + tempBase64 + megLast + (10 + 20 * index);
      }
      console.log("allMsgallMsg===", allMsg);
      let imageUrl = "http://image-demo.img-cn-hangzhou.aliyuncs.com/example.jpg";
      imageUrl = imageUrl + allMsg;
    },

//---轉(zhuǎn)getBase64方法

import CryptoJS from 'crypto-js'
/**
 * getBase64
 */
export const getBase64 = (word) => {
    var str = CryptoJS.enc.Utf8.parse(word);
    var base64 = CryptoJS.enc.Base64.stringify(str);
    return base64
}
其中crypto-js的引用可參考前端crypto-js加密

最終轉(zhuǎn)化的圖片地址是:

http://image-demo.img-cn-hangzhou.aliyuncs.com/example.jpg?x-oss-process=image/resize,w_800,h_800/watermark,type_d3F5LXplbmhlaQ,size_13,text_5rmW5rm-5LqU6Lev56Kn5qGC5Zut6aaZ5rmW5rm-MeWPtw==,color_FFFFFF,shadow_50,t_100,g_se,x_10,y_10/watermark,type_d3F5LXplbmhlaQ,size_13,text_6ZmV6KW_55yB6KW_5a6J5biC54Ge5qGl5Yy65rWQ54Ge55Sf5oCB5Yy65LiW5Y2a5aSn6YGT5LiO6aaZ,color_FFFFFF,shadow_50,t_100,g_se,x_10,y_25/watermark,type_d3F5LXplbmhlaQ,size_13,text_MjAxOS0wMS0yMSAxODoyMzozMw==,color_FFFFFF,shadow_50,t_100,g_se,x_10,y_40

最終效果是:


水印圖片

需要注意的是:

URL安全的Base64位編碼
在圖片處理服務(wù)里會(huì)有很多參數(shù)需要變成Base64位編碼推穷,參考RFC4648。注意這里的URL 安全Base64位編碼只是用在水印操作某些特定參數(shù)(文字水印的文字內(nèi)容类咧,文字顏色馒铃,文字字體及圖片水印的水印object)里,不要將其用來(lái)簽名字符串(Signature)的內(nèi)容痕惋。編碼的格式是:

  • 先將內(nèi)容編碼成Base64結(jié)果;
  • 將結(jié)果中的加號(hào)”+”替換成中劃線“-“;
  • 將結(jié)果中的斜杠”/”替換成下劃線”_”;
  • 將結(jié)果中尾部的“=”號(hào)全部保留;

最大長(zhǎng)度為64個(gè)字符(即支持漢字最多20個(gè)左右)

參考地址:阿里云-圖片水印

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末区宇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子值戳,更是在濱河造成了極大的恐慌议谷,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件述寡,死亡現(xiàn)場(chǎng)離奇詭異柿隙,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)鲫凶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門禀崖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人螟炫,你說(shuō)我怎么就攤上這事波附。” “怎么了昼钻?”我有些...
    開封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵掸屡,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我然评,道長(zhǎng)仅财,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任碗淌,我火速辦了婚禮盏求,結(jié)果婚禮上抖锥,老公的妹妹穿的比我還像新娘。我一直安慰自己碎罚,他們只是感情好磅废,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著荆烈,像睡著了一般拯勉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上憔购,一...
    開封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天宫峦,我揣著相機(jī)與錄音,去河邊找鬼倦始。 笑死斗遏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鞋邑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼账蓉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼枚碗!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起铸本,我...
    開封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤肮雨,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后箱玷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怨规,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年锡足,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了波丰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡舶得,死狀恐怖掰烟,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沐批,我是刑警寧澤纫骑,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站九孩,受9級(jí)特大地震影響先馆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜躺彬,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一煤墙、第九天 我趴在偏房一處隱蔽的房頂上張望缤底。 院中可真熱鬧,春花似錦番捂、人聲如沸个唧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)徙歼。三九已至,卻和暖如春鳖枕,著一層夾襖步出監(jiān)牢的瞬間魄梯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工宾符, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留酿秸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓魏烫,卻偏偏與公主長(zhǎng)得像辣苏,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子哄褒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

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