Suche Informationen zu Grafik-Headern

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Beitrag von Falko »

Hier hab ich auch noch was gefunden:

http://page.mi.fu-berlin.de/~kaudel/vor ... IF+PNG.pdf
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag 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. :?
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Beitrag 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
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag 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... :roll:
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. ;)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8679
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag 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.
Bild
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

ein word sind 2 byte, ein doubleword sind 4 byte... ist also das selbe wie long.
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag 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. :freak: (um mal einen anderen Smilie zu benutzen :D)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8679
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag 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.
Bild
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Beitrag 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
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Antworten