taglib-wasm
Version:
TagLib-Wasm is the universal tagging library for TypeScript/JavaScript platforms: Browsers, Node.js, Deno, Bun, Cloudflare Workers, and Electron apps
56 lines (55 loc) • 1.45 kB
JavaScript
import { applyPictures } from "../simple/index.js";
import { dataURLToPicture } from "./data-url.js";
async function setCoverArtFromCanvas(file, canvas, options = {}) {
const {
format = "image/jpeg",
quality = 0.92,
type = "FrontCover",
description = "Front Cover"
} = options;
const dataURL = canvas.toDataURL(format, quality);
const picture = dataURLToPicture(dataURL, type, description);
return applyPictures(file, [picture]);
}
async function canvasToPicture(canvas, options = {}) {
const {
format = "image/jpeg",
quality = 0.92,
type = "FrontCover",
description
} = options;
return new Promise((resolve, reject) => {
canvas.toBlob(
(blob) => {
if (!blob) {
reject(new Error("Failed to convert canvas to blob"));
return;
}
blob.arrayBuffer().then(
(arrayBuffer) => {
const data = new Uint8Array(arrayBuffer);
resolve({ mimeType: format, data, type, description });
},
reject
);
},
format,
quality
);
});
}
async function imageFileToPicture(file, type = "FrontCover", description) {
const arrayBuffer = await file.arrayBuffer();
const data = new Uint8Array(arrayBuffer);
return {
mimeType: file.type,
data,
type,
description: description ?? file.name
};
}
export {
canvasToPicture,
imageFileToPicture,
setCoverArtFromCanvas
};