UNPKG

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
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 };