From c0c73379890f1a4ee6ee07b1aee188c33ef66ab0 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Wed, 2 Apr 2025 00:11:46 +0900 Subject: feat(blog/nuldoc): dynamically join nested section ids --- .../implementation-of-minimal-png-image-encoder.ndoc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'vhosts/blog/content/posts/2023-04-01') diff --git a/vhosts/blog/content/posts/2023-04-01/implementation-of-minimal-png-image-encoder.ndoc b/vhosts/blog/content/posts/2023-04-01/implementation-of-minimal-png-image-encoder.ndoc index 14a24cae..ec39a99f 100644 --- a/vhosts/blog/content/posts/2023-04-01/implementation-of-minimal-png-image-encoder.ndoc +++ b/vhosts/blog/content/posts/2023-04-01/implementation-of-minimal-png-image-encoder.ndoc @@ -88,7 +88,7 @@ remark = "公開"

以降は、writeSignaturewriteChunkIhdr などを実装していく。

-
+
PNG signature

PNG signature は、PNG 画像の先頭に固定で付与されるバイト列で、8 バイトからなる。 @@ -132,7 +132,7 @@ remark = "公開" encoding/binary パッケージの binary.Write を使い、固定の 8 バイトを書き込む。

-
+
Chunk の構造

IHDR chunk に進む前に、chunk 一般の構造を確認する。 @@ -209,7 +209,7 @@ remark = "公開" 準備ができたところで、具体的な chunk をエンコードしていく。

-
+
IHDR chunk

IHDR chunk は最初に配置される chunk である。次のようなデータからなる。 @@ -274,12 +274,12 @@ remark = "公開" ]]>

-
+
IDAT chunk

IDAT chunk は、実際の画像データが格納された chunk である。IDAT chunk は deflate アルゴリズムにより圧縮され、zlib 形式で格納される。

-
+
Zlib

まずは zlib について確認する。おおよそ次のような構造になっている。 @@ -360,7 +360,7 @@ remark = "公開" ]]>

-
+
画像データ

では次に、zlib 形式で格納するデータを用意する。PNG 画像は次のような順にスキャンする。 @@ -394,7 +394,7 @@ remark = "公開"

-
+
IEND chunk

最後に IEND chunk を書き込む。これは PNG 画像の最後に配置される chunk で、PNG のデコーダはこの chunk に出会うとそこでデコードを停止する。 -- cgit v1.2.3-70-g09d2