使用javascript

时间:2017-02-12 07:44:08

标签: javascript jquery blob cloudinary id3

我已经尝试过在stackoverflow中找到的所有方法。这两个是一些最完整的帖子:

Display image from blob using javascript and websockets

How can you encode a string to Base64 in JavaScript?

  

我正在使用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)));
}

这是标签对象的样子:

enter image description here

然后我在div的background-image属性中使用getImage的返回值。控制台中没有错误(不是错误的请求),但打开数据时:image / jpg; base64,...链接页面上只有一个小白方块。

如何从ID3代码中的图像对象获取工作网址?

1 个答案:

答案 0 :(得分:0)

如果DateTime dt = Convert.ToDateTime(someDate, CultureInfo.InvariantCulture); image.data,您可以使用ArrayBufferFileReader FileReader事件是异步的,您不能在不使用load的情况下从函数返回结果,但您可以在Promise使用FileReaderSync()

另见createImageBitmap alternative on Safari

Worker