[REBOL] PNG examiner
From: reboldes::bigfoot::com at: 2-Sep-2000 6:44
--__REBOL--2.2.0.3.1--2-Sep-2000/15:07:47+2:00--1895
Content-type: text/plain
I want to create a script that will allow me to create or modify simple png files.
I've started with this script, that parses all the standard "chunks" in the file, but
I could not go through the CRC and compression (LZ77 derivate).
Anybody want to help me?
oldes
PS: The PNG spec. I used: http://oldes.multimedia.cz/spec/REC-png.html
--__REBOL--2.2.0.3.1--2-Sep-2000/15:07:47+2:00--1895
Content-Type: application/octet-stream; name="png.r"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="png.r"
UmVib2wgWwoJdGl0bGU6ICJQTkcgRXhhbWluZXIiCglBdXRob3I6ICJvbGRlcyIKCURhdG
U6ICAgIDMxLUF1Zy0yMDAwCgl2ZXJzaW9uOiAwLjAuMQogICAgRmlsZTogICAgJXBuZy5y
CiAgICBFbWFpbDogICByZWJvbGRlc0BiaWdmb290LmNvbQogICAgSG9tZTogICAgaHR0cD
ovL29sZGVzLm11bHRpbWVkaWEuY3ovcnVyL2Rvd25sb2FkLwoJUHVycG9zZTogewogICAg
ICAgQmFzaWMgUE5HIChQb3J0YWJsZSBOZXR3b3JrIEdyYXBoaWNzKSBwYXJzZXIgd2hpY2
ggY2FuCgkgICBzaG93IGFsbCBpbmZvcm1hdGlvbnMgZnJvbSBzdGFuZGFyZCBjaHVua3Mg
aW4gdGhlIGZpbGUuIAogICAgfQogICAgQ2F0ZWdvcnk6IFtmaWxlIHV0aWwgM10KCUhpc3
Rvcnk6IFsKCQkwLjAuMSBbMzEtQXVnLTIwMDAgIm9sZGVzIiAiSW5pdGlhbCB2ZXJzaW9u
Il0KCV0KCWNvbW1lbnQ6IHtJIHdvdWxkIG5lZWQgYSBsaXR0bGUgaGVscCB3aXRoIENSQy
BhbmQgY29tcHJlc3Npb24gdG8gYmUgYWJsZQoJY3JlYXRlL21vZGlmeSBteSBvd24gUE5H
IHBpY3R1cmVzOihvbGRlcwoJUE5HIFNwZWNpZmljYXRpb24gc2hvdWxkIGJlIGZvdW5kIG
F0IGh0dHA6Ly9vbGRlcy5tdWx0aW1lZGlhLmN6L3NwZWMvUkVDLXBuZy5odG1sCglvciBh
dCBodHRwOi8vd3d3LnczLm9yZy9wdWIvV1dXL1RSL30KXQoKaWYgZW1wdHk/IHBuZy1maW
xlOiB0by1maWxlIGFzayAiUE5HIGZpbGU6IiBbcG5nLWZpbGU6ICUvZC90ZXN0LnBuZ10K
cG5nLWJpbjogcmVhZC9iaW5hcnkgcG5nLWZpbGUKCnBuZzogbWFrZSBvYmplY3QhIFsKCW
hlYWRlcjogbm9uZQoJQ29sb3ItdHlwZTogbm9uZQoJQ29sb3ItdHlwZXM6IFsKCQkwICJn
cmF5c2NhbGUsIHdpdGhvdXQgYWxwaGEiCgkJMiAidHJ1ZWNvbG9yLCB3aXRob3V0IGFscG
hhIgoJCTMgImluZGV4ZWQgY29sb3IiCgkJNCAiZ3JheXNjYWxlLCB3aXRoIGFscGhhIgoJ
CTYgInRydWVjb2xvciwgd2l0aCBhbHBoYSIKCV0KCWNodW5rczogbWFrZSBibG9jayEgNg
oJY2h1bms6IG1ha2Ugb2JqZWN0ISBbCgkJbGVuZ3RoOglub25lCgkJdHlwZToJbm9uZQoJ
CWRhdGE6CW5vbmUKCQlDUkM6CW5vbmUKCV0KCWNodW5rLWJ5dGVzOiBbCgkJIklIRFIiIF
s0IDQgMSAxIDEgMSAxXQoJCSJQTFRFIiBbXQoJCSJJREFUIiBbXQoJCSJJRU5EIiBbXQoJ
CQoJCSJjSFJNIiBbNCA0IDQgNCA0IDQgNCA0XQoJCSJnQU1BIiBbNF0KCQkic0JJVCIgW1
0KCQkiYktHRCIgW10KCQkiaElTVCIgW10KCQkidFJOUyIgW10KCQkicEhZcyIgWzQgNCAx
XQoJCSJ0SU1FIiBbMiAxIDEgMSAxIDFdCgkJInRFWHQiIFtdCgkJInpUWHQiIFtdCgldCg
kKXQoKcHJpbnQgcmVmb3JtIFsiUE5HIHNpemU6IiBsZW5ndGg/IHBuZy1iaW4gImJ5dGVz
Il0KCnBuZy9oZWFkZXI6IGNvcHkvcGFydCBwbmctYmluIDgKcG5nLWJpbjogc2tpcCBwbm
ctYmluIDgKaWYgcG5nL2hlYWRlciA8PiAjezg5NTA0RTQ3MEQwQTFBMEF9IFtwcmludCAi
SWxsZWdhbCBQTkcgaGVhZGVyISIgaGFsdF0KCjtoZWxwIGZ1bmN0aW9uczoKZ2V0cGFydD
ogZnVuY1tieXRlcyAvbG9jYWwgdG1wXVsKCXRtcDogY29weS9wYXJ0IHBuZy1iaW4gYnl0
ZXMgCglwbmctYmluOiBza2lwIHBuZy1iaW4gYnl0ZXMKCXRtcApdCgpzbGljZS1iaW46IG
Z1bmMgW2JpbiBieXRlcyAvaW50ZWdlcnMgL2xvY2FsIHRtcCBiXVsKCXRtcDogbWFrZSBi
bG9jayEgbGVuZ3RoPyBieXRlcwoJZm9yYWxsIGJ5dGVzIFsKCQliOiBjb3B5L3BhcnQgYm
luIGJ5dGVzLzEKCQlhcHBlbmQgdG1wIGVpdGhlciBpbnRlZ2VycyBbdG8taW50ZWdlciBi
XVtiXQoJCWJpbjogc2tpcCBiaW4gYnl0ZXMvMQoJXQoJdG1wCl0KZXh0cmFjdC1kYXRhOi
BmdW5jW3R5cGVdWwoJcG5nL2NodW5rL2RhdGE6IHNsaWNlLWJpbi9pbnRlZ2VycyBwbmcv
Y2h1bmsvZGF0YSBzZWxlY3QgcG5nL2NodW5rLWJ5dGVzIHR5cGUKXQo7ZW5kIG9mIGhlbH
AgZnVuY3Rpb25zCgpieXRlczogY2hhcnNldCBbIyJeQCIgLSAjIv8iXQoKcHJpbiAiU2Vh
cmNoaW5nIGZvciBjaHVua3MuLi4gIgoKCndoaWxlIFtub3QgdGFpbD8gcG5nLWJpbl1bCg
lwbmcvY2h1bmsvbGVuZ3RoOgl0by1pbnRlZ2VyIGdldHBhcnQgNAk7bGVuZ3RoCglwbmcv
Y2h1bmsvdHlwZToJCXRvLXN0cmluZyBnZXRwYXJ0IDQJCTt0eXBlCglwbmcvY2h1bmsvZG
F0YToJCWdldHBhcnQgcG5nL2NodW5rL2xlbmd0aAk7ZGF0YQoJcG5nL2NodW5rL0NSQzoJ
CWdldHBhcnQgNAk7Q1JDCgoJcmVwZW5kIHBuZy9jaHVua3MgW3BuZy9jaHVuay9sZW5ndG
ggcG5nL2NodW5rL0NSQyBwbmcvY2h1bmsvdHlwZV0KCXN3aXRjaCBwbmcvY2h1bmsvdHlw
ZSBbCgkJIklIRFIiIFtleHRyYWN0LWRhdGEgIklIRFIiXQk7SW1hZ2UgaGVhZGVyCgkJIn
NCSVQiIFtdCQkJCQkJO1NpZ25pZmljYW50IGJpdHMKCQkicEhZcyIgW2V4dHJhY3QtZGF0
YSAicEhZcyJdCTtQaHlzaWNhbCBwaXhlbCBkaW1lbnNpb25zCgkJImNIUk0iIFtleHRyYW
N0LWRhdGEgImNIUk0iXQk7UHJpbWFyeSBjaHJvbWF0aWNpdGllcyBhbmQgd2hpdGUgcG9p
bnQKCQkiZ0FNQSIgW2V4dHJhY3QtZGF0YSAiZ0FNQSJdCTtJbWFnZSBnYW1tYQoJCSJoSV
NUIiBbXQkJCQkJCTtJbWFnZSBoaXN0b2dyYW0KCQkidEVYdCIgWztUZXh0dWFsIGRhdGEK
CQkJcGFyc2UgcG5nL2NodW5rL2RhdGEgW2NvcHkgayB0byAjIl5AIiAxIHNraXAgY29weS
BkIHRvIGVuZF0KCQkJcG5nL2NodW5rL2RhdGE6IHJlZHVjZSBbayBkXQoJCV0KCQkidElN
RSIgWztJbWFnZSBsYXN0LW1vZGlmaWNhdGlvbiB0aW1lCgkJCWV4dHJhY3QtZGF0YSAidE
lNRSIKCQkJcG5nL2NodW5rL2RhdGE6IHRvLWRhdGUgcmVqb2luIFtwbmcvY2h1bmsvZGF0
YS8zICItIiBwbmcvY2h1bmsvZGF0YS8yICItIiBwbmcvY2h1bmsvZGF0YS8xICIvIiBwbm
cvY2h1bmsvZGF0YS80ICI6IiBwbmcvY2h1bmsvZGF0YS81ICI6IiBwbmcvY2h1bmsvZGF0
YS82XSAKCQldCgkJInRSTlMiIFtdO1RyYW5zcGFyZW5jeQoJCSJ6VFh0IiBbO0NvbXByZX
NzZWQgdGV4dHVhbCBkYXRhCgkJCXBhcnNlIHBuZy9jaHVuay9kYXRhIFtjb3B5IGsgdG8g
IyJeQCIgMSBza2lwIGNvcHkgY20gMSBza2lwIGNvcHkgZCB0byBlbmRdCgkJCXBuZy9jaH
Vuay9kYXRhOiByZWR1Y2UgW2sgY20gZF0KCQldCgldCglyZXBlbmQvb25seSBwbmcvY2h1
bmtzIHBuZy9jaHVuay9kYXRhCl0KCnByaW50IFsiZm91bmQiIChsZW5ndGg/IHBuZy9jaH
Vua3MpIC8gNCAiY2h1bmtzLiJdCjtzaG93IHJlc3VsdHM6CnByaW50ICItLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgpmb3JlYWNoIFtsZW5ndGggY3
JjIHR5cGUgZGF0YV0gcG5nL2NodW5rcyBbCglzd2l0Y2gvZGVmYXVsdCB0eXBlIFsKCQki
SUhEUiIgWztJbWFnZSBoZWFkZXIKCQkJcHJpbnQgWyJXaWR0aF9fX19fX19fX19fX19fXy
IgZGF0YS8xICJwaXhlbHMiXQoJCQlwcmludCBbIkhlaWdodF9fX19fX19fX19fX19fIiBk
YXRhLzIgInBpeGVscyJdCgkJCXByaW50IFsiQml0IGRlcHRoX19fX19fX19fX18iIGRhdG
EvM10KCQkJcHJpbnQgWyJDb2xvciB0eXBlX19fX19fX19fXyIgZGF0YS80ICIoIiBzZWxl
Y3QgcG5nL2NvbG9yLXR5cGVzIGRhdGEvNCAiKSJdCgkJCXByaW50IFsiQ29tcHJlc3Npb2
4gbWV0aG9kX18iIGRhdGEvNV0KCQkJcHJpbnQgWyJGaWx0ZXIgbWV0aG9kX19fX19fXyIg
ZGF0YS82XQoJCQlwcmludCBbIkludGVybGFjZSBtZXRob2RfX19fIiBkYXRhLzddCgkJXQ
oJCSJQTFRFIiBbcHJpbnQgWyJQYWxldHRlOiAgICIgbW9sZCBkYXRhXV0KCQkiSURBVCIg
W3ByaW50IFsiSW1hZ2UgZGF0YToiIG1vbGQgZGF0YV0JXQoJCSJJRU5EIiBbcHJpbnQgIk
ltYWdlIHRyYWlsZXIgLSBFT0YiXQoJCTtBbmNpbGxhcnkgY2h1bmtzCgkJImJLR0QiIFtw
cmludCBbIkJhY2tncm91bmQgY29sb3I6IiBtb2xkIGRhdGFdXQoJCSJjSFJNIiBbCgkJCX
ByaW50ICJQcmltYXJ5IGNocm9tYXRpY2l0aWVzIGFuZCB3aGl0ZSBwb2ludDoiCgkJCXBy
aW50IFsiICBXaGl0ZSBQb2ludCB4X18iIGRhdGEvMV0KCQkJcHJpbnQgWyIgIFdoaXRlIF
BvaW50IHlfXyIgZGF0YS8yXQoJCQlwcmludCBbIiAgUmVkIHhfX19fX19fX19fIiBkYXRh
LzNdCgkJCXByaW50IFsiICBSZWQgeV9fX19fX19fX18iIGRhdGEvNF0KCQkJcHJpbnQgWy
IgIEdyZWVuIHhfX19fX19fXyIgZGF0YS81XQoJCQlwcmludCBbIiAgR3JlZW4geV9fX19f
X19fIiBkYXRhLzZdCgkJCXByaW50IFsiICBCbHVlIHhfX19fX19fX18iIGRhdGEvN10KCQ
kJcHJpbnQgWyIgIEJsdWUgeV9fX19fX19fXyIgZGF0YS84XQoKCQldCgkJImdBTUEiIFtw
cmludCBbIkltYWdlIGdhbW1hOl9fIiBkYXRhXV0KCQkiaElTVCIgW3ByaW50IFsiSW1hZ2
UgaGlzdG9ncmFtOiIgZGF0YV1dCgkJInBIWXMiIFs7UGh5c2ljYWwgcGl4ZWwgZGltZW5z
aW9ucwoJCQlQcmludCBbIlBpeGVscyBwZXIgdW5pdCwgWCBheGlzOiAiIGRhdGEvMV0KCQ
kJUHJpbnQgWyJQaXhlbHMgcGVyIHVuaXQsIFkgYXhpczogIiBkYXRhLzJdCgkJCVByaW50
IFsiVW5pdCBzcGVjaWZpZXI6ICIgZGF0YS8zICIoIiBwaWNrIFsidW5rbm93biIgIm1ldG
VyIl0gKGRhdGEvMyArIDEpCiIpIl0KCQldCgkJInNCSVQiIFtwcmludCBbIlNpZ25pZmlj
YW50IGJpdHM6IiBkYXRhXV0KCQkidEVYdCIgW3ByaW50IFtkYXRhLzEgIjoiIGRhdGEvMl
1dCgkJInRSTlMiIFtwcmludCBbIlRyYW5zcGFyZW5jeTpfX19fIiBkYXRhXV0KCQkielRY
dCIgWwoJCQlwcmludCAiQ29tcHJlc3NlZCB0ZXh0dWFsIGRhdGE6IgoJCQlwcmludCBbIi
AiIGRhdGEvMSBkYXRhLzIgZGF0YS8zXQoJCV0KCQkgIAoJXVsKCQllaXRoZXIgZmluZCBw
bmcvY2h1bmstYnl0ZXMgdHlwZSBbCgkJCXByaW4gW3R5cGUgIiAiXSBwcm9iZSBkYXRhCg
kJXVsJcHJpbnQgWyJOb25zdGFuZGFyZCIgZWl0aGVyICh0by1pbnRlZ2VyIHR5cGUvMikg
PiA4OCBbInByaXZhdGUiXVsicHVibGljIl0gImNodW5rOiIgdHlwZV0KCQldCgldIApdCg
oK
--__REBOL--2.2.0.3.1--2-Sep-2000/15:07:47+2:00--1895
Content-Type: application/octet-stream; name="test.png"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="test.png"
iVBORw0KGgoAAAANSUhEUgAAACQAAAAkAQMAAADbzgrbAAAAA3NCSVQICAjb4U/gAAAABl
BMVEUA/2YAZgBC6Rq9AAAAAnRSTlP//8i138cAAAAJcEhZcwAADnQAAA50AWsks9YAAAAh
dEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIDIuMO6rW8cAAAAWdEVYdENyZW
F0aW9uIFRpbWUAMDgvMzAvMDBqktPXAAAAHUlEQVR4nGP4DwQfGIgi9xOt8jvRKqHkexLV
EyQBlYaw2TYxX2cAAAAASUVORK5CYøI--__REBOL--2.2.0.3.1--2-Sep-2000/15:07:47+2:00--1895--