Autor Beitrag
catweasel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 487
Erhaltene Danke: 1

Win 7 64bit
Delphi 7 Second Sedition V7.2
BeitragVerfasst: Sa 07.06.14 14:07 
Hi,

Ich bin gerade dabei meine TGA Komponente mit einer SaveToFile() Methode auszustatten. LoadFromFile klappt ja schon.
Zunächst scheint ds sehr simpel zu sein. Den header erstelen und dann zusammen mit den Daten in eine Datei schreiben.

Dummerweise muss man dazu wissen wie der Header aufgebaut ist. Die Header Feldpositionen zum lesen hatte ich aus einem Tutorial das nur den Lesezugriff behandelt hat und deshalb den Header nicht vollständig erklärt hat.
Also hab ich mal im Internet geschaut. Der link bei wozit zum TGA Format funktioniert leider nicht. Der nächstbeste Treffer war Wikipedia (natürlich :) )
de.wikipedia.org/wiki/Targa_Image_File
Also hübsch einen header record gedrechselt und mal versucht das Testfile (von dem ich ja weiss das es einen gültigen Header hat) zu laden.
Irgendwie geht es da aber gewaltig daneben. :?

Ich bekomme:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
ImgageIDLen: 0
HasImgageID: 0
ImageType: 2
PalBegin: 0
PalLen: 0
PalBitDepth: 0
MapXZero: 0
MapYZero: 512
ImgWidth: 512
ImgHeight: 2080
PixelBitDepth: 0
ImgAttributes: 0


Also entweder hab ich in meinem Header record etwas vergessen, oder der Wikipedia Artikel stimmt so nicht ganz.... :?:
Die ersten drei Werte scheinen ja ok zu sein. Dann kommen die Nullen für Origin X/Y (laut WP standardmäßig Null)
Da muss irgendetwas fehlen da die Bildbreite/höhe um genau ein wert versetzt ist.
Entweder ist da was ein word wo WP sagt es wäre ein byte oder so etwas..
Und 2080 ist auch sicher nicht die PixelDepth.

Endlich habe ich dann die Orginal SPecs gefunden : www.dca.fee.unicamp....nas/ea978/tgaffs.pdf
Aber da steht es eigentlich genauso ... :?:

Das Testbild habe ich mit Photoshop erzeugt.

Die aktuelle Version ist zum Rumprobieren angehängt :)
(Der button "read header" liest nur den Header aus. Es wird kein objekt erzeugt.)

Cheers,
Catweasel
Einloggen, um Attachments anzusehen!
_________________
Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Sa 07.06.14 16:31 
Targa ist ein tolles Format. Da kriegt man echt alles rein :lol:

Du könntest dir das mal in der glBitmap angucken, die implementiert (spätestens nach user profile iconBergmann89s Rewrite) so ziemlich alles was das Format kann. Ich meine mich erinnern zu können, dass er damals bei irgend einem Format viel geflucht hatte weil die Doku überall falsch war. Könnte das gewesen sein ;) {€: wars nicht, das war DDS}

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
catweasel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 487
Erhaltene Danke: 1

Win 7 64bit
Delphi 7 Second Sedition V7.2
BeitragVerfasst: Sa 07.06.14 16:47 
Hey Martok,

Vielen Dank :D
Das Problem hat sich tatsächlich gelöst. Eigentlich ein Anfängerfehler:
Ich hatte bei der record definition des Headers das "packed" vergessen.
Ein Blick in den verlinken Code und schon isses ins Auge gesprungen :)
Nun wird der Header korrekt gelesen :)

Sollte es noch Probleme geben meld ich mich nochmal.

Cheers,
Catweasel

_________________
Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.