次のことを考えたことはありますか: js ファイルを圧縮するには、js ファイルを PNG 画像に変換し、キャンバス コントロールの getImageData() 関数を使用して画像を js ファイルに再読み込みします。昨日ここで公開した JS ファイルの高速読み込みに関する記事でこの方法について言及しましたが、一部のネットユーザーがこの方法に非常に興味を持っているので、今日は詳しく説明します。
これにより、非常に高い圧縮率を実現できます。どの程度高いかについては後述します。このメソッドはキャンバス コントロールを使用します。これは、キャンバス コントロールをサポートするブラウザでのみ有効であることも意味します。
上の画像はノイズ画像のように見えますが、実際には 124K プロトタイプ フレーム コードから変換された 30K 8 ビット PNG 画像であることがわかります (圧縮率は悪くありません)。
実際、コードを画像形式に変換して保存するには、GIF 形式と PNG 形式に変換できます。 PNG 形式には 24 ビット画像と 8 ビット画像があります。24 ビット RGB 画像を使用する場合、各ピクセルは 3 バイトのデータを保存できます。8 ビット RGB 画像を使用する場合、各ピクセルは 1 バイトを保存できます。データの。
PHOTOSHOP でのテストでは、300x100 のソリッド カラー ノイズ 8 ビット画像は 5K まで圧縮できるのに対し、同じソリッド カラー ノイズ画像が 100x100 の 24 ビット画像の場合は 20K までしか圧縮できないことがわかりました。同じパターンの8ビットGIF画像の場合、圧縮効果はPNGよりも悪くなります。したがって、圧縮および解凍用の保存形式として 8 ビット PNG 画像を使用することを選択します。
ここで、画像の圧縮を開始する必要があります。PHP で書かれたファイルを圧縮する方法は次のとおりです。 リーリー
JS ファイルを読み込み、PNG 画像を作成します。画像内の各ピクセルは 0 ~ 255 の値であり、この値は JS 文字の ascII 値に対応します。
もちろん、圧縮に加えて、画像を JS ファイルに読み込むプロセスである解凍もあります。この関数は JS で書かれており、具体的なコードは次のとおりです:
リーリー
最後に、この Web ページで、PNG 画像ファイルを選択して、Web ページ上に画像を表示できます。コードファイル。
http://www.nihilogic.dk/labs/canvascompress/
興味がありそうな記事