canvas系列--图像处理(四) 图像添加水印

阳光穿透心脏的1/2处 2021-09-11 08:24 576阅读 0赞

20170301160019290

从上一章 canvas系列—图像处理(三) 图像缩放的列子来说

一.知识点

1.要清楚理解drawImage() 方法,了解drawImage() 方法在画布上可以绘制图像、画布或视频

context.drawImage(canvas,x,y,width,height);

2.在canvas中绘制文本的方法:

Context.font = “bold 50px Arial”;

context.fillText(text,x,y,maxWidth);

//text画布上输出的文本。x,y绘制文本的坐标位置 maxWidth允许的最大文本宽度

二.代码

  1. <!DOCTYPE html>
  2. <html>
  3. <head lang="en">
  4. <meta charset="UTF-8">
  5. <title></title>
  6. <style type="text/css">
  7. body{
  8. background: black;
  9. }
  10. #scale-range{
  11. display:block;
  12. margin:20px auto;
  13. width:800px;
  14. }
  15. #canvas{
  16. display:block;
  17. margin:0 auto;
  18. border:1px solid #aaa;
  19. }
  20. #watermark-canvas{
  21. display:none;margin:0 auto;border:1px solid #aaa;
  22. }
  23. </style>
  24. </head>
  25. <body>
  26. <canvas id="canvas">您的浏览器尚不支持canvas</canvas>
  27. <input type="range" id="scale-range" min="0.5" max="3.0" step="0.01" value="1.0" />
  28. <canvas id="watermark-canvas">您的浏览器尚不支持canvas</canvas>
  29. <script>
  30. var canvas = document.getElementById("canvas");
  31. var context = canvas.getContext("2d");
  32. var slider = document.getElementById("scale-range");
  33. var image = new Image();
  34. var imgW=1024;
  35. var imgH=750;
  36. canvas.width = 1024;
  37. canvas.height = 750;
  38. var watermarkCanvas = document.getElementById("watermark-canvas");
  39. var watermarkContext = watermarkCanvas.getContext("2d");
  40. window.onload = function(){
  41. var scale = slider.value;
  42. image.src = "timg.jpg";
  43. image.onload = function(){
  44. drawImage( image , scale );
  45. slider.onmousemove = function(){
  46. scale = slider.value;
  47. drawImage( image , scale );
  48. }
  49. }
  50. //绘制水印的文字
  51. watermarkCanvas.width = 400;
  52. watermarkCanvas.height = 100;
  53. watermarkContext.font = "bold 50px Arial";
  54. watermarkContext.lineWidth = "1";
  55. watermarkContext.fillStyle = "#f00";
  56. watermarkContext.textBaseline = "middle";
  57. watermarkContext.fillText( "水印文字" , 20 , 50 );
  58. }
  59. function drawImage( image , scale ){
  60. var imageWidth = imgW * scale; //imgW,imgH是图片的大小
  61. var imageHeight =imgH * scale;
  62. x = canvas.width /2 - imageWidth / 2;
  63. y = canvas.height / 2 - imageHeight / 2;
  64. context.clearRect( 0 , 0 , canvas.width , canvas.height );
  65. context.drawImage( image , x , y , imageWidth , imageHeight );
  66. if(scale<1){
  67. context.drawImage(watermarkCanvas,imageWidth -watermarkCanvas.width+x,imageHeight-watermarkCanvas.height+y);//缩放比例小于1时,图片小于canvas画布,用图片的宽高减去水印的宽高+图片在画布中的宽高就可以固定水印在右下角
  68. }else{
  69. //用画布的宽高-水印的宽高,就可以固定水印在右下角
  70. context.drawImage(watermarkCanvas,canvas.width-watermarkCanvas.width,canvas.height-watermarkCanvas.height);
  71. }
  72. }
  73. </script>
  74. </body>
  75. </html>

发表评论

表情:
评论列表 (有 0 条评论,576人围观)

还没有评论,来说两句吧...

相关阅读