Seite 2 von 2
Verfasst: 30.08.2004 09:42
von Falko
Verfasst: 30.08.2004 12:25
von Ynnus
Jau, danke, dass ist doch mal ne anständige deutsche Info zu den Formaten. Dort wird auch genau der Header erklärt, nur leider passt es wieder nicht so ganz.
Dort soll eine 8 byte Signatur und dann nochmal 8 byte Infos folgen. Dann soll bei 17 byte (länge 4 byte) die X Größe und bei 21 (länge 4 byte) die Y Größe folgen. Ich bekomm weder x noch y. Im Hex Editor ist es mal wieder 19 und 23, wobei ich mit meinem Code nur bei 19 den X Wert erhalte, die 23 ist mal wieder Müll.
Das ist irgendwie zum Verzweifeln, die Infos scheinen ja alle so zu stimmen, aber trotzdem will es nicht so ganz.

Verfasst: 31.08.2004 01:11
von Falko
Hier noch eine weitere deutsche Beschreibung zum PNG-Format (ein Ort, ganz in meiner Nähe)
http://einstein.informatik.uni-oldenbur ... ze/png.htm
http://www.fh-jena.de/contrib/fb/et/per ... ruktur.htm
Hier noch ein Borland C-Code, der interessant werden könnte:
http://www.swissdelphicenter.ch/de/showcode.php?id=1698
Hier noch was in Delphi:
http://www.delphipraxis.net/topic629,previous.html
Ich hoffe, du findest hier was passendes.
MfG Falko
Verfasst: 31.08.2004 09:05
von Ynnus
Ich hab was gefunden... Könnte es damit zusammenhängen, dass der Datentyp ein Doubleword ist, und nicht Long? Dürfte imo beides 4 byte groß sein, aber gibt es da spezielle Unterschiede? Wenn ja, wie könnte man dann eine doubleword simulieren und dennoch den Wert einlesen? Ansonsten stoße ich immer wieder auf die selbe Info, Signatur ist 8 byte lang, dann folgen 4 byte infos, und dann kommen Breite und Höhe in Pixel...
Naja, ich schau mich mal weiter um ob ich daraus schlau werde. Danke für vielen links hier. Wenn jemand was genaues zum Problem PNG hat soll er es mich bitte wissen lassen.

Verfasst: 31.08.2004 14:51
von NicTheQuick
Funktioniert das hier vielleicht?
Code: Alles auswählen
Procedure ReadDoubleWord()
Protected DoubleWord.l, a.l
a = ReadWord()
DoubleWord | a << 16
a = ReadWord()
DoubleWord | a
ProcedureReturn DoubleWord
EndProcedure
Ich muss aber dazu sagen, dass ich in Wirklichkeit keine Ahnung habe, was ein DoubleWord ist, aber es mal so interpretiert habe.
Verfasst: 31.08.2004 21:33
von Zaphod
ein word sind 2 byte, ein doubleword sind 4 byte... ist also das selbe wie long.
Verfasst: 31.08.2004 21:44
von Ynnus
naja, leider klappt es immer noch nicht. Bei Nics Variante kommt das selbe raus wie als wenn man eine Long ließt. Und der Wert ist eben leider nicht korrekt... Was ist nur mit diesem dummen Header los, ich werd noch bekloppt.

(um mal einen anderen Smilie zu benutzen

)
Verfasst: 31.08.2004 21:46
von NicTheQuick
Bei meinem Code kommt etwas anderes raus wie bei [c]ReadLong()[/c]. Ich habe es extra ausprobiert. Da sind nämlich das HighWord und LowWord des Longs vertauscht.
Verfasst: 05.09.2004 20:07
von Falko
@Sunny
Hab hier einen kompletten Source in VB gefunden, mit dem man
die Infos aus verschiedenen Grafikformaten auslesen kann.
http://www.freevbcode.com/ShowCode.Asp?ID=112
MfG Falko