下载选中的 Canvas 图片

鼠标移动到canvas元素上并按下Ctrl+shift+c来选中,将其转换为 PNG 格式图片文件并自动下载到本地。

  1. // ==UserScript==
  2. // @name 下载选中的 Canvas 图片
  3. // @namespace http://tampermonkey
  4. // @version 1.1
  5. // @description 鼠标移动到canvas元素上并按下Ctrl+shift+c来选中,将其转换为 PNG 格式图片文件并自动下载到本地。
  6. // @match *://*.17font.com/*
  7. // ==/UserScript==
  8.  
  9. (function() {
  10. 'use strict';
  11.  
  12. let selectedCanvas;
  13.  
  14. // 处理鼠标移动事件
  15. const handleMouseMove = (e) => {
  16. // 获取鼠标所指向的元素
  17. const element = document.elementFromPoint(e.clientX, e.clientY);
  18.  
  19. // 如果鼠标所指向的元素是一个 canvas 元素,则将其保存为 selectedCanvas 变量
  20. if (element.tagName && element.tagName.toUpperCase() === "CANVAS") {
  21. selectedCanvas = element;
  22. }
  23. else {
  24. selectedCanvas = null;
  25. }
  26. };
  27.  
  28. // 处理快捷键事件
  29. const handleKeyDown = (e) => {
  30. // 如果按下 ctrl + shift + C 快捷键,并且 selectedCanvas 不为空
  31. if (e.ctrlKey && e.shiftKey && e.keyCode === 67 && selectedCanvas) {
  32. // 创建空画布
  33. const canvas = document.createElement("canvas");
  34. canvas.width = selectedCanvas.width;
  35. canvas.height = selectedCanvas.height;
  36.  
  37. // selectedCanvas 内容绘制到空画布上
  38. const context = canvas.getContext("2d");
  39. context.drawImage(selectedCanvas, 0, 0);
  40.  
  41. // 将画布内容转为图片并下载
  42. canvas.toBlob((blob) => {
  43. const url = URL.createObjectURL(blob);
  44. const a = document.createElement("a");
  45. document.body.appendChild(a);
  46. a.style.display = "none";
  47. a.href = url;
  48. a.download = "canvas_image.png";
  49. a.click();
  50. document.body.removeChild(a);
  51. window.URL.revokeObjectURL(url);
  52.  
  53. // 提示用户下载成功
  54. // GM_notification("下载成功", "Canvas downloader");
  55. });
  56.  
  57. // 阻止默认事件
  58. e.preventDefault();
  59. e.stopPropagation();
  60. }
  61. };
  62.  
  63. // 将鼠标移动事件和快捷键事件绑定到 window 对象上
  64. window.addEventListener("mousemove", handleMouseMove);
  65. window.addEventListener("keydown", handleKeyDown);
  66.  
  67. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址