1

node-canvasは、Cairoに依存するHTML5キャンバスライブラリのNode.jsバージョンです。私のアプリは、アプリに送信されるデータに応じて、一連のPNGファイルを作成します。

node-canvas2つの関数toBuffer()を提供toDataURL()し、ブラウザに送信できる文字列に生のPNGまたはBase64でエンコードされたPNGを出力します。ただし、ライブラリにインターレースのサポートを追加する方法はありません。

ライブラリの機能を拡張し、インターレースPNGのサポートを追加したいと思います。文字列に生のPNGデータがあり、画像のピクセル配列もあります(必要な場合)。PNGエンコーディングがどのように機能するかを理解していません。インターレースされていない生のPNGデータまたはピクセル配列のいずれかであるデータをインターレース/プログレッシブPNGに変換するために使用する必要のあるアルゴリズムを誰かに教えてもらえますか?

これは、複雑な方程式をグラフ化する、私が構築しているグラフ電卓アプリに必要な手順です。私のアプリで上から下に読み込まれるインターレースされていないPNGよりも、ぼやけた画像がすばやく表示され、時間の経過とともに鮮明になると便利です。

ありがとう!

4

1 に答える 1

0

インターレースされていない生のPNGデータをインターレースされたPNGストリームに変換することはできません。インターレースPNGと非インターレースPNGは、PNGエンコーディングの2つの異なる方法です(基本的にピクセルストリームの順序は異なりますが、その後、フィルター圧縮が適用されるため、最終ストリームを変更してインターレースと非インターレースを切り替えることはできません。インターレースモード)。インターレースPNGを生成するのは、生の画像ピクセルからPNGファイル(またはストリーム)を書き込むために使用されるPNGエンコーダーの作業です。

それでも、インターレース画像は使用しないことをお勧めします。圧縮効率が低下し(特にPNGの場合)、ユーザーエクスペリエンスの利点については少なくとも議論の余地があります。たとえばを参照してください。現在、インターレースPNGはほとんど使用されていません。

于 2012-07-30T19:08:39.350 に答える