使用canvas在图片上画矩形及文字

妖狐艹你老母 2021-09-21 07:44 923阅读 0赞

效果图
在这里插入图片描述

上代码

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. </head>
  8. <body>
  9. <div style="display: flex;">
  10. <canvas id="myCanvas" width="520" height="720" style="border:1px solid #d3d3d3;">
  11. 这是浏览器不支持canvas时展示的信息
  12. </canvas>
  13. <img id="img" width="400px" height="400px" />
  14. </div>
  15. <div>
  16. <input accept=".png,.jpg,.jpeg" type="file" id="file" onchange="myFile(file)" />
  17. <button onclick="window.close()">关闭窗口</button>
  18. </div>
  19. <script>
  20. const img = document.getElementById("img")
  21. // 把图片转base64
  22. function myFile(file) {
  23. const imgsize = file.files[0]
  24. const render = new FileReader()
  25. render.readAsDataURL(imgsize)
  26. render.onload = (e) => {
  27. // console.log(e, 'e')
  28. const src = e.target.result
  29. // console.log(src)
  30. img.src = src
  31. srcImg = src
  32. canvasPart(src)
  33. }
  34. }
  35. function canvasPart(srcImg) {
  36. var c = document.getElementById("myCanvas");
  37. var ctx = c.getContext("2d");
  38. var img = new Image()
  39. // 这里可以放 图片路径 "./test.jpg" || base64图片 || 图片链接
  40. img.src = srcImg || 'https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1589884154&di=9b0f36e95282f61005aa4b7dc6a7698b&src=http://a3.att.hudong.com/14/75/01300000164186121366756803686.jpg'
  41. console.log(img, 'SRC', srcImg)
  42. img.onload = function () {
  43. // 设置图片在canvas上 前面两个0,0是边距, 后面是宽高
  44. ctx.drawImage(img, 0, 0, 520, 720);
  45. // 添加文字 后面两个数字是坐标
  46. ctx.font = "20px sans-serif"
  47. ctx.fillStyle = '#e22018'
  48. ctx.fillText("添加文字", 125, 137);
  49. // 画矩形 前两个数字是坐标, 后面是矩形的宽高 fillRect是填充的
  50. ctx.strokeStyle = '#e22018'
  51. ctx.strokeRect(125, 137, 115, 108);
  52. ctx.strokeStyle = 'pink'
  53. ctx.strokeRect(240, 245, 248, 248);
  54. }
  55. }
  56. canvasPart('')
  57. </script>
  58. </body>
  59. </html>

发表评论

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

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

相关阅读

    相关 canvas图片圆角

    获取屏幕比率 有的手机屏幕实际分辨率的像素比页面过去的尺寸像素要大,一遍是一倍或者两倍 var getPixelRatio = function(context)