yuk1ty / learning-systems-programming-in-rust

「Rustでもわかるシステムプログラミング」
433 stars 23 forks source link

3.5.4: PngAnalyzer を使ってPNGファイルをチャンク分解し、IHDRチャンクの直後にtEXtチャンクを挿入した新しいPNGファイルを出力するプログラム #79

Closed laysakura closed 3 years ago

laysakura commented 3 years ago

対象の Issue

Fixes: #13

動作確認結果

73 と同じく、画像ファイルは https://upload.wikimedia.org/wikipedia/en/7/7d/Lenna_%28test_image%29.png を使用。

Go

https://github.com/yurakawa/learn-system-programming-with-go/blob/master/ch3/s5-4/main.go

chunk 'IHDR' (13 bytes)
chunk 'tEXt' (19 bytes)
ASCII PROGRAMMING++
chunk 'sRGB' (1 bytes)
chunk 'IDAT' (473761 bytes)
chunk 'IEND' (0 bytes)

Rust

%  cargo run --bin 3_5_4 ~/Downloads/Lenna.png
PNG file copied (with tEXt embedded) to: "/var/folders/6b/m27gbqp15ddc90cyj1r3bvjc0000gn/T/1620619628-499019000"

%  cargo run --bin 3_5_3 /var/folders/6b/m27gbqp15ddc90cyj1r3bvjc0000gn/T/1620619628-499019000
Chunk type: IHDR, Data len: 13, CRC: 0x7B1A43AD
Chunk type: tEXt, Data len: 19, CRC: 0xFCDAA85B - "ASCII PROGRAMMING++"
Chunk type: sRGB, Data len: 1, CRC: 0xAECE1CE9
Chunk type: IDAT, Data len: 473761, CRC: 0xA5461538
Chunk type: IEND, Data len: 0, CRC: 0xAE426082

% file /var/folders/6b/m27gbqp15ddc90cyj1r3bvjc0000gn/T/1620619628-499019000
/var/folders/6b/m27gbqp15ddc90cyj1r3bvjc0000gn/T/1620619628-499019000: PNG image data, 512 x 512, 8-bit/color RGB, non-interlaced
yuk1ty commented 3 years ago

5/16 23:59 まで開いておきます