溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

用JS實現圖片馬賽克效果。

發布時間:2020-07-26 05:28:21 來源:網絡 閱讀:1026 作者:w2sft 欄目:編程語言

用JS實現圖片馬賽克效果。用js給圖片打馬賽克。

效果如下:

用JS實現圖片馬賽克效果。


左邊是馬賽克之前的圖片,右邊是對圖片加馬賽克后的效果。

操作方法:

新建一個html文件,html區寫入以下內容:

<canvas?id="canvas"?data-src="test.jpg"?width="800"?height="600"></canvas>

JS代碼部分寫入:

?const?mosaicImage?=?(target,?mosaicSize?=?20)?=>?{
????????let?canvas?=?document.getElementById(target),
????????????_canvas?=?document.createElement('canvas');
????????if?(!canvas?||?!canvas.getContext)?{
????????????return?false;
????????}
????????/**
?????????*?根據圖片填充馬賽克塊
?????????*/
????????const?createMosaic?=?(context,?width,?height,?size,?data)?=>?{
????????????for?(let?y?=?0;?y?<?height;?y?+=?size)?{
????????????????for?(let?x?=?0;?x?<?width;?x?+=?size)?{
????????????????????/**
?????????????????????*?取出像素的r,g,b,a值
?????????????????????*/
????????????????????let?cR?=?data.data[(y?*?width?+?x)?*?4],
????????????????????????cG?=?data.data[(y?*?width?+?x)?*?4?+?1],
????????????????????????cB?=?data.data[(y?*?width?+?x)?*?4?+?2];
????????????????????context.fillStyle?=?`rgb(${cR},${cG},${cB})`;
????????????????????context.fillRect(x,?y,?x?+?size,?y?+?size);
????????????????}
????????????}
????????};
????????/**
?????????*?將數據畫到canvas
?????????*/
????????const?draw?=?(_context,?imageData,?context)?=>?{
????????????createMosaic(_context,?_canvas.width,?_canvas.height,?mosaicSize,?imageData);
????????????context.drawImage(_canvas,?0,?0);
????????};

????????const?init?=?()?=>?{
????????????let?context?=?canvas.getContext('2d');
????????????/**
?????????????*?設置圖片來源
?????????????*/
????????????let?img?=?new?Image();
????????????img.src?=?canvas.getAttribute('data-src');
????????????/**
?????????????*?加載圖片
?????????????*/
????????????img.onload?=?()?=>?{
????????????????let?_context?=?_canvas.getContext('2d'),
????????????????????imageData;
????????????????/**
?????????????????*?圖片大小與canvas匹配
?????????????????*/
????????????????_canvas.width?=?img.width;
????????????????_canvas.height?=?img.height;
????????????????/**
?????????????????*?重置canvas畫布大小
?????????????????*/
????????????????canvas.width?=?img.width;
????????????????canvas.height?=?img.height;
????????????????_context.drawImage(img,?0,?0);
????????????????/**
?????????????????*?獲取canvas各像素的顏色信息
?????????????????*?像素的顏色信息從左到右,r,?g,?b,?a?值排列
?????????????????*/
????????????????imageData?=?_context.getImageData(0,?0,?_canvas.width,?_canvas.height);
????????????????draw(_context,?imageData,?context);
????????????};
????????};
????????init();
????};
????/**
?????*?div對象,?及馬賽克大小
?????*/
????mosaicImage('canvas',?8);

說明:

test.jpg是要馬賽克的圖片,放在網頁文件同一目錄下,馬賽克大小是可控的,如上面的代碼中所注釋的。

如果要對JS代碼進行混淆加密,可以用JShaman平臺,加密后就可以防止別人Copy自己的代碼了,還可以把代碼鎖定在指定的域名下,效果很不錯。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女