#簡(jiǎn)介
水印圖片在生活中應(yīng)用廣泛。例如,從媒體發(fā)布的圖片將被加上水印,以防止內(nèi)容被傳輸?shù)狡渌脚_(tái)。實(shí)名認(rèn)證的身份證照片會(huì)打上“僅用作XXX”的水印,防止身份證被濫用。本文介紹了如何使用從頭開始為圖片生成水印。本文的功能將發(fā)布到小程序——“工具寶箱”。歡迎拍磚。
#一步一步。
水印其實(shí)就是編輯圖片,這需要一個(gè)三方庫(kù)-――jimp,也就是所謂的。
圖像編輯軟件”。在.json中添加jimp依賴項(xiàng),并將其引入項(xiàng)目中。
{ ' name ' : ' --app 1 ',' main': 'app.js ',' ' : { ' jimp ' : ' 0 . 16 . 1 ' } }
Jimp水印分為兩個(gè)步驟:1 .閱讀需要加水印的圖片。2.添加水印。代碼如下:
使用“嚴(yán)格”;//引入Jim pvar jimp=(' jimp ');讓//閱讀原文jimp.read ('h: \ \ tmp \ \ 12.jpg ')。然后(image={ =image//加載水印字體返回jimp . load font(jimp . font _ sans _ 64 _ black);}).然后(font={//生成水印并保存.print (font,10,10,' ')。write(' h : \ \ tmp \ \ 12 _ water . jpg ');//10表示水印開始的坐標(biāo),原點(diǎn)在左上角})
細(xì)心的朋友發(fā)現(xiàn),添加水印前需要加載字體。Jimp內(nèi)置黑白開從8px到128px。
它也支持位圖類型的字體文件。注意:內(nèi)置字體不支持中文!
經(jīng)常使用水印的朋友可能會(huì)注意到,水印文本一般是半透明的,不會(huì)覆蓋原始圖像。上面的例子不符合要求。半透明水印可以通過(guò)半透明字體或圖像合成來(lái)實(shí)現(xiàn)。代碼如下:
使用“嚴(yán)格”;//引入Jim pvar jimp=(' jimp ');讓//閱讀原文jimp.read ('h: \ \ tmp \ \ 4.jpg ')。然后(image={ =image//加載水印字體返回jimp . load font(jimp . font _ sans _ 64 _ black);}).然后(font={//初始化一張透明度為0的圖片讓文字圖像=new jimp( image . . width,..,0x 0);//生成水印.print(字體,10,10,' ')。復(fù)合(,0,0,{mode:jimp.blend _ ,,.3})。寫入(' h:)。})
通常水印會(huì)有多行,因此需要計(jì)算圖像高度和水印高度來(lái)確定行數(shù)。代碼如下:
使用“嚴(yán)格”;//引入Jim pvar jimp=(' jimp ');讓//閱讀原文jimp.read ('h: \ \ tmp \ \ 6.jpg ')。然后(image={ =image//加載水印字體返回jimp . load font(jimp . font _ sans _ 64 _ black);}).然后(font={//初始化一張透明度為0的圖片讓文字圖像=new jimp( image . . width,..,0x 0);//計(jì)算水印高度讓text =jimp . text (字體,‘’);//統(tǒng)計(jì)行數(shù),注意水印高度從10開始。讓row num=math . floor(( image . . -10)/text )為(讓I=0;i ) { .print(字體,10,10 i * ,' Lin test ');}//生成水印text ( image,0,0,{mode:jimp.blend _生成圖片坐標(biāo)的軟件,:1生成圖片坐標(biāo)的軟件,.3})。write(' h : \ \ tmp \ \ 6 _ water . jpg ')。})
#摘要
下一期要介紹的水印生成還有兩個(gè)問(wèn)題:1 .中國(guó)人。2.45斜水印。請(qǐng)向前看!