使用JavaScript来膨胀blob?

前端之家收集整理的这篇文章主要介绍了使用JavaScript来膨胀blob?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在使用websocket以blob格式发送Jpeg图像.我已经压缩(gzipped)blob但我无法找到使用JavaScript解压缩它的方法.有谁知道怎么样?

这是我用来读取blob然后将其转换为base64字符串的代码

  1. var r = new FileReader();
  2. r.onload = function(){
  3. draw(btoa(r.result));
  4. };
  5. r.readAsBinaryString(e.data);

draw()函数基本上使用base64字符串将图像绘制到HTML5画布上.

我发现this library膨胀字符串,但它不支持blob. (据我所知/已经测试过)如果有人知道某种方式,我会赞同它. :) 谢谢!

最佳答案
我为我的particle system editor做了一个非常类似的事情,它支持阅读Cocos2D plist文件.在plist文件中是纹理数据,这是一个用gzip压缩然后转换为base64的png.我是这样做的:

  1. var input = 'byu9g1RZpINUpVtoKoiKIqJYoris...'; // really long string
  2. // from base64 to ascii binary string
  3. var decodedAsString = atob(input);
  4. // ascii string to bytes in gzipped format
  5. var data = this._binaryStringToArray(decodedAsString);
  6. // raw,uncompressed,binary image data into an array using gzip.js
  7. var uncompressed = require('gzip-js').unzip(data);
  8. // now take the raw uncompressed png and convert it
  9. // back to base64 to use it as a data url
  10. var asString = this._arrayToBinaryString(uncompressed);
  11. var encodedForDataUrl = btoa(asString);
  12. var img = new Image();
  13. img.src = encodedForDataUrl;

我正在使用gzip.js进行繁重的工作.你可以在here中看到所有这些,你可以得到一些plist加载到它here.BoilingFoam.plist将工作,只需在“导入/导出”部分加载它.

在上面的代码中我调用了两个方法,它们是:

  1. _binaryStringToArray: function(binaryString) {
  2. var data = [];
  3. for (var i = 0; i < binaryString.length; ++i) {
  4. data[i] = binaryString.charCodeAt(i);
  5. }
  6. return data;
  7. },_arrayToBinaryString: function(array) {
  8. var str = '';
  9. for (var i = 0; i < array.length; ++i) {
  10. str += String.fromCharCode(array[i]);
  11. }
  12. return str;
  13. },

整个shebang是here

猜你在找的JavaScript相关文章