さまざまなネットワーク画像形式におけるPNGの利点の詳細な説明

さまざまなネットワーク画像形式におけるPNGの利点の詳細な説明

BMP は、ハードウェア デバイスに依存せず、広く使用されている画像ファイル形式です。ビットマップ保存形式を使用し、オプションの画像深度以外の圧縮は使用しません。そのため、BblP ファイルは大きなスペースを占有します。 BMP ファイルの画像深度は、1 ビット、4 ビット、8 ビット、24 ビットです。 BMP ファイルにデータを保存する場合、画像は左から右、下から上にスキャンされます。
BMP ファイル形式は Windows 環境で画像関連データを交換するための標準であるため、Windows 環境で実行されるすべてのグラフィックおよび画像ソフトウェアは BMP 画像形式をサポートしています。
一般的な BMP 画像ファイルは、BMP 画像ファイルのタイプや表示内容などの情報が含まれるビットマップ ファイル ヘッダー データ構造と、BMP 画像の幅、高さ、圧縮方法、色の定義などの情報が含まれるビットマップ情報データ構造の 3 つの部分で構成されます。


JPEG 圧縮技術は、すべての画像圧縮技術の基礎とも言えます。静止画像圧縮に適しており、画像全体を直接処理し、圧縮率は20〜80倍で、解像度の選択はありません。そのため、圧縮ファイル全体が転送されるまで待ってから、画像に解凍する必要があります。この方法では、高解像度の画像の転送に数十秒から数分かかることもあります。


MJPEG (Motion JPEG) は、JPEG をベースに開発された動画像圧縮技術です。特定のフレームのみを圧縮し、基本的にビデオ ストリーム内の異なるフレーム間の変化は考慮しません。これにより、高精細な映像の取得が可能となり、チャンネルごとの映像精細度や圧縮フレームレートを柔軟に設定できます。圧縮された画像も自由に編集できます。しかし、その欠点も非常に明白です。まず、フレーム損失が深刻で、リアルタイム性能が低いです。各チャンネルが高解像度であることを保証しながら、リアルタイム圧縮を完了することは困難です。 2つ目:圧縮効率が低く、保存スペースが大きい。


その後、多層 JPEG (ML-JPEG) 圧縮技術が登場しました。これは、プログレッシブ技術を使用して、最初に低解像度の画像を送信し、その後、より詳細な圧縮データで補完して画質を向上させます。この方法は、元の方法と同じ時間がかかります。ただし、ユーザーは最初に画像を見ることができるため、この方法の方が適していると感じるでしょう。


PNG は、1990 年代半ばに開発された画像ファイル保存形式です。その目的は、GIF ファイル形式にはないいくつかの機能を追加しながら、GIF および TIFF ファイル形式を置き換えることです。 Portable Network Graphic Format (PNG) の名前は、非公式の「PNG は GIF ではない」に由来しています。これは、「ピング」と発音されるビットマップ ファイルの保存形式です。 PNG を使用してグレースケール画像を保存する場合、グレースケール画像の深度は最大 16 ビットになります。カラー画像を保存する場合、カラー画像の深度は最大 48 ビットになり、最大 16 ビットのアルファ チャネル データも保存できます。 PNG は、LZ77 から派生したロスレス データ圧縮アルゴリズムを使用します。


PNG ファイル形式は、GIF ファイル形式の次の特性を保持します。

カラー ルックアップ テーブルまたはパレットを使用すると、256 色のカラー画像をサポートできます。
ストリーミング可能性: 画像ファイル形式では、画像データの連続的な読み取りと書き込みが可能であり、通信中に画像を生成して表示するのに最適です。
プログレッシブ表示: 通信リンク上で画像ファイルを送信しながら、端末に画像を表示できる機能です。全体のアウトラインが表示された後、画像の詳細が徐々に表示されます。つまり、最初は低解像度で画像が表示され、その後解像度が徐々に高くなります。
透明度: このプロパティを使用すると、画像の特定の部分を表示しないようにすることができ、独特な画像を作成できます。
補助情報: この機能を使用すると、画像ファイルにテキスト注釈情報を保存できます。
コンピュータのハードウェアおよびソフトウェア環境に依存しません。
ロスレス圧縮を使用します。


PNG ファイル形式には、GIF ファイル形式にはない次の機能を追加する必要があります。

ピクセルあたり 48 ビットのトゥルーカラー画像。
ピクセルあたり 16 ビットのグレースケール画像。
グレースケールおよびトゥルーカラー画像にアルファ チャネルを追加できます。
画像のガンマ情報を追加します。
巡回冗長コード (CRC) を使用して破損したファイルを検出します。
画像表示を高速化する逐次比較表示モード。
標準の読み取り/書き込みツールキット。
複数の画像を 1 つのファイルに保存できます。
ファイル構造


PNG 画像形式のファイル (またはデータ ストリーム) は、8 バイトの PNG ファイル署名フィールドと、特定の構造に編成された 3 つ以上のデータ チャンクで構成されます。


PNG は 2 種類のデータ チャンクを定義します。1 つはクリティカル チャンクと呼ばれる標準データ チャンクで、もう 1 つは補助チャンクと呼ばれるオプションのデータ チャンクです。キー データ ブロックは、4 つの標準データ ブロックを定義します。すべての PNG ファイルにこれらのデータ ブロックが含まれている必要があり、すべての PNG 読み取りおよび書き込みソフトウェアもこれらのデータ ブロックをサポートする必要があります。 PNG ファイル仕様では、オプションのデータ ブロックをエンコードおよびデコードするために PNG コーデックは必要ありませんが、オプションのデータ ブロックのサポートが推奨されています。


GIF (Graphics Interchange Format) の本来の意味は「Image Interchange Format」であり、1987 年に CompuServe によって開発された画像ファイル形式です。 GIF ファイルのデータは、LZW アルゴリズムに基づく連続階調ロスレス圧縮形式です。圧縮率は一般的に約 50% で、どのアプリケーションにも属しません。現在、ほぼすべての関連ソフトウェアがこれをサポートしており、パブリックドメインにも GIF 画像ファイルを使用するソフトウェアが多数存在します。 GIF 画像ファイルのデータは圧縮されており、可変長などの圧縮アルゴリズムが使用されます。したがって、GIF の画像深度は 1 ビットから 8 ビットの範囲であり、GIF は最大 256 色の画像をサポートすることになります。 GIF 形式のもう 1 つの特徴は、1 つの GIF ファイルに複数のカラー画像を保存できることです。ファイルに保存された複数の画像データを 1 つずつ読み出して画面に表示すれば、最もシンプルなアニメーションを作成できます。


GIF は、静的 GIF とアニメーション GIF に分けられます。透明な背景画像をサポートし、複数のオペレーティングシステムに適しており、サイズが非常に小さいです。インターネット上の多くの小さなアニメーションは GIF 形式です。実際、GIF は複数の画像を 1 つの画像ファイルに保存してアニメーションを形成するため、最終的には GIF は依然として画像ファイル形式です。

<<:  MySQL 整合性制約の定義と例のチュートリアル

>>:  CSS での配置の使用方法の詳細な研究 (要約)

推薦する

Vueはmockjsを使用してシミュレートされたデータケースの詳細を生成します

目次プロジェクトにmockjsをインストールするVueプロジェクトでmockjsを使用する基本的なプ...

RR および RC 分離レベルでのインデックスとロックのテスト スクリプトのサンプル コード

基本概念現在の読み取りとスナップショットの読み取りMVCC では、読み取り操作はスナップショット読み...

Vue 計算プロパティ実装トランスクリプト

この記事では、Vueの計算プロパティ実装レポートカードを参考に共有します。具体的な内容は次のとおりで...

Win7 で IIS7 Web および FTP サービスを完全にアンインストールする方法

昨日、パソコンにPHP開発環境をセットアップした後、Apacheサーバーを再起動するとエラーが続きま...

Linux で Sudo を使用して権限を委譲する

sudo 権限委譲の概要su スイッチ ID: su –l ユーザー名 –c 'コマンド&#...

html2canvas を使用して、Baidu マップを含む Dom 要素を画像に処理するソリューション

問題 1: Baidu Map はタイル画像 (地図が写真で構成されている) を使用しています。ht...

Vueナンバープレート入力コンポーネントの使い方の詳しい説明

参考までに、シンプルなナンバープレート入力コンポーネント(vue)です。具体的な内容は次のとおりです...

スネークゲームを作るための Pygame コード

目次使用されるPygame関数スクリーンの作成ヘビの作成ヘビを動かすゲームオーバーの処理食事を増やす...

js配列forEachインスタンスの詳細な使用方法

1. forEach() は map() に似ています。これも渡された関数に各要素を順番に適用します...

Nginx で Angular プロジェクトを展開する際の落とし穴

コンパイル後にAngularプロジェクトをNginxにデプロイする方法をオンラインで検索すると、ほと...

Linux ダイナミックライブラリの生成と使用ガイドの詳細な説明

Linux での動的ライブラリ ファイルのファイル名は libxxx.so のようになります。ここで...

単一/複数行テキストを含む div を垂直方向に中央揃えする N 通りの方法 (高さ不明/高さ固定)

この問題について話すとき、垂直方向の中央揃えを設定するための vertical-align 属性が ...

WeChatアプレットがテキストスクロールを実装

この記事の例では、WeChatアプレットでテキストスクロールを実装するための具体的なコードを参考まで...

ベースタグとは何ですか? また、それは何をするのですか?

<base> タグは、ページ上のすべてのリンクのデフォルトのアドレスまたはデフォルトの...

jsはシンプルな計算機を実装します

参考までに、ネイティブjsを使用して簡単な計算機(詳細なコメント付き)を実装します。具体的な内容は次...