@modern-kit/utils
Version:
50 lines (47 loc) • 1.36 kB
JavaScript
;
const CANVAS_IMAGE_TYPE_TO_FORMAT_MAPPER = {
png: "image/png",
jpg: "image/jpeg",
jpeg: "image/jpeg",
webp: "image/webp"
};
const createBlobFromCanvas = (canvas, format) => {
return new Promise((resolve, reject) => {
canvas.toBlob((blob) => {
if (blob) {
resolve(blob);
} else {
reject(new Error(`Failed to create blob with format ${format}`));
}
}, format);
});
};
function convertImageToBlob(url, imageType = "png") {
return new Promise((resolve, reject) => {
const img = new Image();
img.onload = async () => {
const canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
try {
const ctx = canvas.getContext("2d");
if (!ctx) throw new Error("Failed to get 2d context");
ctx.drawImage(img, 0, 0);
const result = await createBlobFromCanvas(
canvas,
CANVAS_IMAGE_TYPE_TO_FORMAT_MAPPER[imageType]
);
resolve(result);
} catch (error) {
console.error(`Failed to load image. message: ${error.mesaage}`);
reject(error);
}
};
img.onerror = () => {
reject(new Error("Failed to load image"));
};
img.src = url;
});
}
exports.convertImageToBlob = convertImageToBlob;
//# sourceMappingURL=index.cjs.map