さまざまなネットワーク画像形式における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 での配置の使用方法の詳細な研究 (要約)

推薦する

MySQL アップグレードのベストプラクティス

MySQL 5.7 には、オンライン DDL、マルチソース レプリケーション、拡張された半同期、テー...

Centos 7 sshd の変更 | ルートログインの禁止と sshd ポートスクリプトの定義

1. 新しいユーザーwwweee000を作成します [root@localhost ~]# user...

js は丸で囲まれた数字のリストのサンプルコードを動的に追加します

1. まず本文にulタグを追加します <!-- 順序なしリスト --> <ul i...

Windows Server 2008 R2 サーバーが理由もなく自動的に再起動する問題の解決策

Windows Server 2008 サーバーが自動的に再起動します。サーバーにログインした後、ど...

Dockerイメージの作成Dockerfileとコミット操作

イメージを構築するイメージを構築するには、主に 2 つの方法があります。実行中のコンテナをイメージに...

MySQL 文字列分割の例 (区切り文字なしの文字列抽出)

区切り文字なしの文字列抽出質問の要件データベース内のフィールド値:実装効果: 1行のデータを複数行に...

Linuxでシンボリックリンクを削除(削除)するコマンド

Linux では、シンボリック リンクを作成または削除する必要がある場合があります。もしそうなら、何...

MySQL ジョイントインデックス(複合インデックス)の実装

共同インデックスこの記事におけるジョイントインデックスの定義は次のとおりです (MySQL): AL...

停止したすべてのDockerコンテナを1つのコマンドで再起動する

停止したすべてのDockerコンテナを1つのコマンドで再起動するdocker ps -a | gre...

MySQL 8.0 のインデックス スキップ スキャン

序文MySQL 8.0.13 では、インデックス スキップ スキャン (インデックス ジャンプ スキ...

MySQLの空の値とnull値の違いを知っていますか?

序文最近、友人がSQLを書くときにnull値を判定する方法が間違っていて、プログラム内のデータにエラ...

MySQL テーブルの断片化を解消し、スペースを再利用する方法

目次MySQL テーブルの断片化の原因行の断片化行内断片化空き領域の断片化MySQL で極度に断片化...

開発効率の向上に役立つ 56 個の実用的な JavaScript ツール関数

目次1. デジタルオペレーション(1)指定された範囲内で乱数を生成する2. 配列操作(1)配列の順序...

ボタンをクリックして画像を切り替える JavaScript

この記事の例では、ボタンをクリックすることで画像を切り替えることを実現するJavaScriptの具体...

Ubuntu 16.04 に Docker と nvidia-docker をインストールするための詳細なチュートリアル

目次DockerのインストールNvidia-docker のインストールDockerのインストール1...