WebContextMenus: Fix jpegs being uncopyable

This commit is contained in:
Vendicated 2023-04-08 23:05:38 +02:00
parent 0dee968e98
commit acc874c34f
No known key found for this signature in database
GPG Key ID: A1DC0CFB5615D905
1 changed files with 18 additions and 7 deletions

View File

@ -179,14 +179,25 @@ export default definePlugin({
],
async copyImage(url: string) {
const data = await fetchImage(url);
if (!data) return;
// Clipboard only supports image/png, jpeg and similar won't work. Thus, we need to convert it to png
// via canvas first
const img = new Image();
img.onload = () => {
const canvas = document.createElement("canvas");
canvas.width = img.naturalWidth;
canvas.height = img.naturalHeight;
canvas.getContext("2d")!.drawImage(img, 0, 0);
await navigator.clipboard.write([
new ClipboardItem({
[data.type]: data
})
]);
canvas.toBlob(data => {
navigator.clipboard.write([
new ClipboardItem({
"image/png": data!
})
]);
}, "image/png");
};
img.crossOrigin = "anonymous";
img.src = url;
},
async saveImage(url: string) {