Convert all image files to JPEG on the client before uploading, allowing iPhone HEIF/HEIC photos to work without server-side libheif dependency.
18 lines
667 B
JavaScript
18 lines
667 B
JavaScript
/** Convert any image file (HEIC, AVIF, WebP, PNG, etc.) to a JPEG data URL via Canvas. */
|
|
const imageToJpegDataUrl = (file) =>
|
|
new Promise((resolve, reject) => {
|
|
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);
|
|
URL.revokeObjectURL(img.src);
|
|
resolve(canvas.toDataURL("image/jpeg", 0.92));
|
|
};
|
|
img.onerror = () => {
|
|
URL.revokeObjectURL(img.src);
|
|
reject(new Error("Failed to load image"));
|
|
};
|
|
img.src = URL.createObjectURL(file);
|
|
});
|