Skip to content

Instantly share code, notes, and snippets.

@Eniwder
Last active January 19, 2022 11:35
Show Gist options
  • Select an option

  • Save Eniwder/6fb8646afca911db6fc0a2723efdf8a4 to your computer and use it in GitHub Desktop.

Select an option

Save Eniwder/6fb8646afca911db6fc0a2723efdf8a4 to your computer and use it in GitHub Desktop.
(function(){
const svg = document.querySelector('svg');
const svgData = new XMLSerializer().serializeToString(svg);
const canvas = document.createElement('canvas');
canvas.width = svg.width.baseVal.value;
canvas.height = svg.height.baseVal.value;
const ctx = canvas.getContext('2d');
const image = new Image;
image.onload = function(){
ctx.drawImage(image, 0, 0);
canvas.toBlob(blob => navigator.clipboard.write([new ClipboardItem({'image/png': blob})]))
}
image.src = "data:image/svg+xml;charset=utf-8;base64," + btoa(unescape(encodeURIComponent(svgData)));
})()
@Eniwder

Eniwder commented Jan 19, 2022

Copy link
Copy Markdown
Author
// ブックマークレットversion
javascript:(function(){
  const svg = document.querySelector('svg');
  const svgData = new XMLSerializer().serializeToString(svg);
  const canvas = document.createElement('canvas');
  canvas.width = svg.width.baseVal.value;
  canvas.height = svg.height.baseVal.value;

  const ctx = canvas.getContext('2d');
  const image = new Image;
  image.onload = function(){
    ctx.drawImage(image, 0, 0);
    canvas.toBlob(blob => navigator.clipboard.write([new ClipboardItem({'image/png': blob})]))
  };
  image.src = "data:image/svg+xml;charset=utf-8;base64," + btoa(unescape(encodeURIComponent(svgData)));
})()

@Eniwder

Eniwder commented Jan 19, 2022

Copy link
Copy Markdown
Author
// ボタン追加version
(function(){
  const svg = document.querySelector('svg');
  const svgData = new XMLSerializer().serializeToString(svg);
  const canvas = document.createElement('canvas');
  canvas.width = svg.width.baseVal.value;
  canvas.height = svg.height.baseVal.value;

  const ctx = canvas.getContext('2d');
  const image = new Image;
  image.onload = function(){
    ctx.drawImage(image, 0, 0);
    canvas.toBlob(blob => navigator.clipboard.write([new ClipboardItem({'image/png': blob})]))
  }
  const button = document.createElement('button');
  button.innerText = 'Copy';
  button.style.cssText = 'border: 2px solid green; color: greenyellow; background-color: black;';
  button.addEventListener('click',() => image.src = "data:image/svg+xml;charset=utf-8;base64," + btoa(unescape(encodeURIComponent(svgData))));
  const parent = document.querySelector('svg').parentNode;
  parent.appendChild(button);
})();

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment