J'ai une balise qui représente la couverture de l'album des chansons. Je peux récupérer l'image de couverture de l'album de la chanson à l'aide de l'analyseur
music-metadata , comme ceci:
let album_cover = document.getElementById('album-cover')
album_cover.src = new_picture_path
Maintenant, si je regarde la console, j'ai quelque chose comme ceci:
Je peux donc récupérer l'image en utilisant metadata['common'letter['picture'[0. ceci (qui utilise une image par défaut pour la couverture de l'album):
<img id="album-cover" src="assets/images/Album Cover.jpg" width="200px" height="200px">
Je suis conscient que je peux changer cette image en utilisant du JavaScript pur, comme ceci:
const mm = require('music-metadata')
mm.parseFile(music_filepath)
.then(metadata => {
console.log(metadata)
})
.catch(error => {
console.error(error.message)
})
Mais cette méthode utilise chemin de fichier . Comment puis-je changer l'image directement à partir des métadonnées ?
3 Réponses :
vous pouvez définir une img base64 ed
document.getElementById ('imgTest') .setAttribute ('src', 'data: image / png; base64, iVBORw0KGgoAAAANSUhEUgAAAAU // 8 / ==');
Vous pouvez générer une base64 de votre image et la transmettre à l'attribut de votre image en faisant quelque chose comme ceci:
const request = require('request').defaults({ encoding: null });
const mm = require('music-metadata')
const generateBase64 = url => {
return new Promise(
resolve => {
request.get(url, (error, response, body) => {
if (!error && response.statusCode == 200) {
const data = "data:" + response.headers["content-type"] + ";base64," + new Buffer.from(body).toString('base64')
return (resolve(data))
}
return(resolve(null))
}
)}
)
}
mm.parseFile(music_filepath)
.then(async metadata => {
const base64 = await generateBase64(metadata)
if (!base64) return;
const album_cover = document.getElementById('album-cover')
album_cover.setAttribute('src', base64);
})
.catch(error => {
console.error(error.message)
})
Grâce à la réponse fournie par aperesso , je l'ai résolu comme ceci.
let acf = metadata['common']['picture'][0]['format'] // album_cover_format
let acd = metadata['common']['picture'][0]['data'] // album_cover_data
album_cover.src = `data:${acf};base64,${Buffer.from(acd).toString('base64')}`