[英]Display image from ID3 image data using javascript
我已經嘗試了所有可以在stackoverflow中找到的方法。 這是一些最完整的帖子:
使用javascript和websockets顯示blob中的圖像
我正在使用cloudinary和id3js。 首先,我將mp3文件上傳到cloudinary,然后通過id3js向Ajax請求該文件。 這給了我所有的ID3標簽。
openUploadModal() {
cloudinary.openUploadWidget(window.cloudinaryOptions,
(errors, track) => {
if(!values(errors).length) {
id3(track[0].secure_url, (errs, tags) => {
this.setState({
title: tags.title,
audio_url: track[0].secure_url,
artist: tags.artist,
uploaded: true,
cover_photo: this.getImage(tags.v2.image)
});
});
}
});
}
和圖像轉換器:
getImage(image) {
var arrayBuffer = image.data;
var bytes = new Uint8Array(arrayBuffer);
return "data:image/png;base64,"+btoa(unescape(encodeURIComponent(bytes)));
}
標簽對象如下所示:
然后,我在div的background-image屬性中使用getImage的返回值。 控制台中沒有錯誤(很不錯的請求),但是打開data:image / jpg; base64,...鏈接時,頁面上只有一個小白方塊。
如何從ID3標簽中的圖像對象獲取有效的網址?
如果image.data
是ArrayBuffer
,則可以使用FileReader
。 FileReader
load
事件是異步的,盡管可以在Worker
使用FileReaderSync()
,但不使用Promise
不能從函數返回結果。
另請參閱Safari上的createImageBitmap替代方案 。
var reader = new FileReader();
reader.onload = function() {
// do stuff with `data URI` of `image.data`
console.log(reader.result);
}
reader.readAsDataURL(new Blob([image.data], {type:image.mime}));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.