1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
| let img = document.querySelector('#img') let canvas = document.querySelector('#canvas') let invertColor = document.querySelector('#invertColor') let adjustColor = document.querySelector('#adjustColor') let blurImage = document.querySelector('#blurImage') let fudiaoImage = document.querySelector('#fudiaoImage') let kediaoImage = document.querySelector('#kediaoImage') let mirrorImage = document.querySelector('#mirrorImage') let ctx = canvas.getContext('2d') let invertColorctx = invertColor.getContext('2d') let adjustColorctx = adjustColor.getContext('2d') let blurImagectx = blurImage.getContext('2d') let fudiaoImagectx = fudiaoImage.getContext('2d') let kediaoImagectx = kediaoImage.getContext('2d') let mirrorImagectx = mirrorImage.getContext('2d') img.src="./img/cover.jpg" img.onload=()=>{ //图片灰度 canvas.width = img.width canvas.height = img.height ctx.drawImage(img,0,0,img.width,img.height) let imageData = ctx.getImageData(0,0,img.width,img.height) for(let i=0;i<imageData.data.length;i+=4){ let r = imageData.data[i] let g = imageData.data[i+1] let b = imageData.data[i+2] let avg = .299 * r + .587 * g + .114 * b imageData.data[i] = avg imageData.data[i+1] = avg imageData.data[i+2] = avg } ctx.putImageData(imageData,0,0,0,0,img.width,img.height) //图片反色调 invertColor.width = img.width invertColor.height = img.height invertColorctx.drawImage(img,0,0,img.width,img.height) let invertColorData = invertColorctx.getImageData(0,0,img.width,img.height) for(let i=0;i<invertColorData.data.length;i+=4){ invertColorData.data[i] = 255-invertColorData.data[i] invertColorData.data[i+1] = 255-invertColorData.data[i+1] invertColorData.data[i+2] = 255-invertColorData.data[i+2] } invertColorctx.putImageData(invertColorData,0,0) //图片灰色调 adjustColor.width = img.width adjustColor.height = img.height adjustColorctx.drawImage(img,0,0,img.width,img.height) let adjustColorData = adjustColorctx.getImageData(0,0,img.width,img.height) for(let i=0;i<adjustColorData.data.length;i+=4){ let r = adjustColorData.data[i] let g = adjustColorData.data[i+1] let b = adjustColorData.data[i+2] adjustColorData.data[i] = (r * 0.272) + (g * 0.534) + (b * 0.131) adjustColorData.data[i+1] = (r * 0.349) + (g * 0.686) + (b * 0.168) adjustColorData.data[i+2] = (r * 0.393) + (g * 0.769) + (b * 0.189) } adjustColorctx.putImageData(adjustColorData,0,0) //图片模糊,这里是用3X3的卷积核 blurImage.width = img.width blurImage.height = img.height blurImagectx.drawImage(img,0,0,img.width,img.height) let blurImageData = blurImagectx.getImageData(0,0,img.width,img.height) for(let i=0;i<blurImageData.height-2;i++){ for(let j=0;j<blurImageData.width*4-8;j+=4){ let list1 = [0,1,2],list2 = [0,4,8] let tr=0,tg=0,tb=0 list1.forEach((a)=>{ list2.forEach((b)=>{ let num = j+b+(i+a)*blurImageData.width*4 tr += blurImageData.data[num] tg += blurImageData.data[num+1] tb += blurImageData.data[num+2] }) }) tr = tr/9 tg = tg/9 tb = tb/9 list1.forEach((a)=>{ list2.forEach((b)=>{ let num = j+b+(i+a)*blurImageData.width*4 blurImageData.data[num] = tr blurImageData.data[num+1] = tg blurImageData.data[num+2] = tb }) }) } } blurImagectx.putImageData(blurImageData,0,0) }
|