apng(png)

png(portable network graphics)とは、rasterであり、バイナリデータで構成されるfile形式です。
pngは'89 50 4e 47 0d 0a 1a 0a'(hex)、IHDRchunk、その他chunk、IENDchunkの順に構成されます。
chunkはlength、type、data、crcの順に構成されます。
crc(cyclic redundancy check)はtypeとdataから作成します。

apng(animated portable network graphics)とは、acTLfcTLfdATの順にchunkを追加したpngです。

chunk

category name length
(4bytes)
type
(4bytes)
data
(?)
crc
(4bytes)
png IHDR
00 00 00 0d
49 48 44 52
13bytes 4bytes
png PLTE 4bytes
50 4c 54 45
? 4bytes IHDR color_type = 3
apng acTL
00 00 00 08
61 63 54 4c
8bytes 4bytes
png IDAT 4bytes
49 44 41 54
? 4bytes
apng fcTL
00 00 00 1a
66 63 54 4c
26bytes 4bytes
apng fdAT 4bytes
66 64 41 54
? 4bytes
png IEND
00 00 00 00
49 45 4e 44
0byte
ae 42 60 82


IHDR


data

width
(4bytes)
height
(4bytes)
bit_depth
(1byte)
color_type
(1byte)
compression_method
(1byte)
filter_method
(1byte)
interlace_method
(1byte)
1,2,4,8,16 0 grayscale
8,16 2 rgb
1,2,4,8 3 PLTE
8,16 4 grayscale(alpha)
8,16 6 rgb(alpha)


PLTE


data

palette
(1byte)
...


acTL


data

num_frames
(4bytes)
num_plays
(4bytes)


fcTL


data

sequence_mumber
(4bytes)
width
(4bytes)
height
(4bytes)
x_offset
(4bytes)
y_offset
(4bytes)
deley_num
(2bytes)
deley_den
(2bytes)
dispose_op
(1byte)
blend_op
(1byte)


fdAT


data

sequence_mumber
(4bytes)
frame_data
(?)