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

@ -179,14 +179,25 @@ export default definePlugin({
], ],
async copyImage(url: string) { async copyImage(url: string) {
const data = await fetchImage(url); // Clipboard only supports image/png, jpeg and similar won't work. Thus, we need to convert it to png
if (!data) return; // 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([ canvas.toBlob(data => {
new ClipboardItem({ navigator.clipboard.write([
[data.type]: data new ClipboardItem({
}) "image/png": data!
]); })
]);
}, "image/png");
};
img.crossOrigin = "anonymous";
img.src = url;
}, },
async saveImage(url: string) { async saveImage(url: string) {