1

ブラウザは、画像形式のサポートが不十分です。実際には、GIF、JPG、PNG、および WebP のみがサポートされています。

私は新しいものを持っていたい: JBIG2

エンド ユーザーの観点からは、Chrome 拡張機能をダウンロードしてインストールするだけで、ブラウザは新しい画像形式をデコードできます。

Web 開発者の観点から見ると、新しい形式は透過的であり、タグ img、canvas、および css と互換性があります。JBIG2 画像を表示するために、彼はまだ以下を使用しています。

<img src=“path/to/myImage.jbig2”&gt;

また

var myImage = new Image();
myImage.addEventListener( 'load', function() {
    // insert in canvas, when image is loaded
});
myImage.src = 'path/to/myImage.jbig2';

また

.my-class {
    background-image: url( “path/to/myImage.jbig2”);
}

問題はデコーダ自体ではありません。C言語で書かれたこの1つのJBig2decを使用する予定です。

問題は、新しい画像デコーダをどのように実装するかです。Chrome で C コードを実行する必要がある場合、最善の解決策はNative Client Extensionを使用することです。

さらに良いことに、この NaCl Web ページで読むことができます。

グラフィックス、オーディオなど: 2D および 3D グラフィックスのレンダリング、オーディオの再生、マウスおよびキーボード イベントへの応答、複数のスレッドでの実行、およびメモリへの直接アクセスを行うネイティブ コード モジュールを実行します。ユーザーがプラグインをインストールする必要はありません。

マルチメディア アプリケーション: サウンド、画像、およびムービーを処理するためのコーデックは、Native Client モジュールでブラウザーに追加できます。

残念ながら、2D グラフィックデコーダーを実装するためのドキュメントもサンプルもありません。minetype image/jbig2のフックを登録する必要があると思います。

NaCl を使用して新しい画像形式のデコーダーを実装する方法を知っている人はいますか?

4

1 に答える 1

2

はい、説明した解決策はほとんど機能すると思いますが、 の<embed src="..." type="image/jbig2">代わりに を使用して画像をロードする必要がある場合があります<img>

基本的に、次のことを行います。

  1. Native Client SDKを使用して JBig2 デコーダーをコンパイルする
  2. PPAPI プラグイン エントリ ポイントを追加します。NaCl SDK の例、またはこちらのチュートリアルを参照してください。
  3. 派生インスタンスクラスで、仮想関数HandleDocumentLoadを実装します。この関数は、Native Client プラグインが MIME タイプ ローダーとして使用されるときに呼び出されます。渡されたURLLoaderオブジェクトを使用して、JBig2 ファイルを読み取ることができます。
  4. 2D グラフィックス コンテキストを作成し、その中にデコードされたイメージの内容を表示します。NaCl SDK (examples/api/graphics2d) の Graphics2D の例を見てみましょう。
  5. JBig2 Native Client mimetype ハンドラーとして自身を登録するChrome 拡張機能を作成します (既に見つけたように)。
于 2014-05-14T16:36:00.133 に答える