
ご存知のとおり、すべてのファイルは単なるデータのコンテナです。PNG
ファイルもこのルールの例外ではありません。
PNG ファイルは基本的に、色付きピクセルの長方形グリッドを参照するだけなので、それほど複雑ではありません。ビデオや GIF ほど複雑ではありません。
私の質問は、メモ帳だけを使用して、何もないところから PNG を作成するにはどうすればよいかということです。このファイルは、画像として認識されるブラウザ (Chrome など) で開くことができます。
4 つの色付きピクセルの小さな正方形が、良い例になるでしょう。
ペイントを使用して何が起こっているか確認してみると、興味深い結果が得られます。
ペイントを使用して、次のような PNG ファイルを作成すると、(2 x 2 ピクセルと非常に小さいため、拡大する必要があるかもしれません)
結果のテキスト ファイルは次のようになります。
IHDR ýÔšs sRGB ®Îé gAMA ±üa pHYs à ÃÇo¨d IDATWcè`ýÿ‰Ai£½Ç !ß=î_— IEND®B`‚
しかし、舞台裏では何が起こっているのでしょうか?
明確に言えば、質問は PNG ファイルを作成する方法ではなく、テキストを使用して、たとえば虹の 7 色の線など、特定の基準に一致する PNG ファイルを作成する方法です。
答え1
メモ帳だけを使用して、何もないところから PNG を作成するにはどうすればよいでしょうか?
非常に困難です。16 進エディタを使用すると簡単になります (ただし、それでも困難です)。
基本的には、PNG仕様。
ファイルのヘッダーは、次の 10 進数値で構成される PNG 署名で始まる必要があります。
137 80 78 71 13 10 26 10
10 進数の 10 (改行) は、メモ帳を使用して入力することはできません (そのため、16 進エディターを使用することをお勧めします)。
また、CRC 値を計算し、多くの複雑なチャンク順序付けルールに従うことも必要です。
上記のリンク先の仕様を読めば、PNG を手作業で作成するのがいかに複雑であるかがわかります。
PNG をサポートするグラフィック エディターを使用する方がはるかに簡単になります。
答え2
答え3
答え4
実際、ファイルは単なるデータのコンテナではありません。バイナリ データのストリームです。バイナリ ストリームのどの部分がどのデータであるかは、ファイルの種類ごとにレイアウトが異なります。
メモ帳で画像を開くと、バイナリ ストリームが人間の言語の文字として解釈されます。ただし、特定の言語の文字として定義したものに対応するバイナリを使用してファイルを作成することはありません。したがって、メモ帳では、バイナリ ストリームを効果的に解釈して、PNG インタープリターが認識できるデータを追加および削除できる場合とできない場合があります。
PNG ファイルをゼロから作成する方法を本当に知りたい場合は、ディスクからバイナリ ストリームを読み取り、それを 16 進数で表示する 16 進エディター プログラムを使用して、数値 (最も推奨されるのは 2 進数または 16 進数) を使用して作成する必要があります。
参照してくださいDavidPostillの回答