Spaces:
Running
Running
import { decode } from "blurhash" | |
const SIZE = 32; | |
export function blurHashToDataURL(hash) { | |
if (!hash) return undefined | |
const pixels = decode(hash, SIZE, SIZE) | |
const canvas = document.createElement("canvas"); | |
canvas.width = SIZE; | |
canvas.height = SIZE; | |
const ctx = canvas.getContext("2d"); | |
const imageData = ctx.createImageData(SIZE, SIZE); | |
imageData.data.set(pixels); | |
ctx.putImageData(imageData, 0, 0); | |
return canvas.toDataURL(); | |
} | |
function downloadData(url, filename) { | |
// Create an anchor element with the data URL as the href attribute | |
const downloadLink = document.createElement('a'); | |
downloadLink.href = url; | |
// Set the download attribute to specify the desired filename for the downloaded image | |
downloadLink.download = filename; | |
// Trigger the download | |
downloadLink.click(); | |
// Clean up: remove the anchor element from the DOM | |
downloadLink.remove(); | |
} | |
export function downloadImage(url, filename) { | |
fetch(url, { | |
headers: new Headers({ | |
Origin: location.origin, | |
}), | |
mode: 'cors', | |
}) | |
.then((response) => response.blob()) | |
.then((blob) => { | |
let blobUrl = window.URL.createObjectURL(blob) | |
downloadData(blobUrl, filename) | |
}) | |
.catch((e) => console.error(e)) | |
} | |