2017-05-24 16 views
5

私はブラウザでDJスキーマを表示する必要があるプロジェクトを持っています。ArrayBufferからBLOBへの変換

これは私が理解する限り、djvuファイルをbmpに変換してキャンバス要素に入れています。

私が言ったように、図書館は古いです(最後のコミットは5年前でした)ので、私はいくつかの訂正をする必要があります。主な問題は、libが廃止されたBlobBuilderを使用することです。私はこの問題を解決するためになさ

ステップ:

  1. 解凍このライブラリクロームデベロッパーツール経由
  2. 初期誤差がライン3774 var c = "undefined" != typeof MozBlobBuilder ? MozBlobBuilder : "undefined" != typeof WebKitBlobBuilder ? WebKitBlobBuilder : console.log("warning: cannot build blobs")
  3. である私がコメントアウト、次
  4. この行をコメントアウトc = new c;と次の行もあります。

だから、今、それはこのように見えます(変数Iは、配列バッファ、およびololo1であり、いくつかのオフセットの種類と制限がololo2ある)

var c = new Blob(new Uint8Array(new Uint8Array(I,ololo1,ololo2))) 
       , b = b.createObjectURL(c) 
       , c = document.getElementById(kb) 
       , f = c.getContext("2d") 
       , h = new Image 
       , g = a[Ea >> 2] 
       , i = a[Fa >> 2] 
       , j = c.width 
       , k = Math.round(i * j/g); 

      h.onload = function() 
      { 
       var a = g/j; 
       4 < a && (a = 4); 
       1 > a && (a = 1); 
       f.globalAlpha = 1; 

       for (N = 0; N < a; N++) 
        f.drawImage(h, N, N, g - a + N, i - a + N, 0, 0, j, k), 
        f.globalAlpha *= 1 - 1/a; 
       R(h.complete, "Image /bmp.bmp could not be decoded") 
      } 
      ; 
      h.onerror = function(errorMsg, url, lineNumber, column, errorObj) { 
       console.log(errorMsg, url, lineNumber, column, errorObj); 
       console.log("Image /bmp.bmp could not be decoded!") 
      }   
      ; 

そして今、私はエラー「画像/ BMPで立ち往生。 bmpをデコードできませんでした! "(h.onerrorハンドラでスローされました)。

私の質問は、私が間違っていることですか?

+1

元は 'c.append(。(新Uint8Array(新Uint8Array(I、ololo1、ololo2)))バッファー)でした'。 新しいBlob([new Uint8Array(I、ololo1、ololo2)]) ';でちょうど良いはずです。 – Kaiido

+0

@Kaiido多くの感謝、魅力のように動作します。回答として投稿できますか? – Rulisp

答えて

11

なぜ私は著者がUint8Arrayを新しいものにラップしてバッファのコピーを作成したのかわかりません...廃止されたBlobBuilder APIも1つの誤植あなたは、通常の配列であなたTypedArrayをラップする必要があるということです、あなたのコード内で見ることができます:

new Blob([new Uint8Array(data)]); 
関連する問題