Seite 1 von 1
[gelöst] Laden von TGA Dateien
Verfasst: 24. Juni 2007 17:45
von ChMaster
Servus zusammen,
ich habe im Internet schon geschaut und eine spährliche Ausgabe
bekommen. Gefunden habe ich unter SourceForge.net
libtga, entweder
stellt mir diese Bibliothek kein RawData zu Verfügung oder ich habe
diese Funktion übersehen. Darum habe ich mal eine bescheidene Frage.
Gibt es die Möglichkeit mit Qt 4.3.x TGA Dateien zu lesen?
Wenn nicht, welche Möglichkeiten habe ich dann?
Verfasst: 27. Juni 2007 15:25
von ChMaster
Servus Zusammen,
hat keiner von Euch Erfahrung im Umgang mit TGA Dateien?
Ich breuchte da wirklich hilfe, da ich durch weiteres suchen
nichts gefunden habe.
Ps.: Anscheinend ist das entwickeln mit TGA Dateien unter Qt4
nicht so weit verbreitet.

Verfasst: 27. Juni 2007 19:19
von upsala
Ich finde den Wikipedia-Artikel über dieses Dateiformat recht interessant (Vor allem den letzten Absatz...) Ansonsten gibt es eine C++-Library (paintlib) die unter anderem TGA-Datei handhaben können soll. Vielleicht kannst du diese miteinbinden...
Verfasst: 27. Juni 2007 22:55
von ChMaster
Hallo upsala,
danke für deine Antwort. Den Wikipedia-Artikel habe ich schon gelesen und er ist wirklich interessant.
Nur das ich dort Paint.Net sehe was in C# geschrieben wurde. Dieses kann ich zwar mit Qt43 nutzen,
aber das kommt für mich nicht in Frage, da ich Plattformunabhängig programmieren will.
Die Bibliothek paintlib werde ich mir mal genauer anschauen. Danke für deinen Tipp.
Verfasst: 28. Juni 2007 10:57
von ChMaster
Danke, anscheinend ist es das was ich suchte.
Werde mir diese Bibliothek mal etwas genauer
anschauen.
Verfasst: 6. Juli 2007 16:33
von ChMaster
servus,
paintlib war nicht das richtige. Habe mal etwas genauer im Internet geschaut und etwas
ordentliches gefunden. Die Bibliothek nennt sich
FreeImage, diese Bibliothek ist auch
unter Windows verfügbar.
Bin gerade dabei diese Bibliothek einzubinden, wenn ich es geschaft habe werde ich evtl.
ein kleines Tutorial erstellen wie man TGA Dateien läd und darstellt. (Mal schauen)

Verfasst: 8. Juli 2007 00:05
von ChMaster
servus,
so habe es geschaft mit FreeImage3 TGA Dateien zu laden.
Hier mal der CodeSnippe: Originalsource
FreeImageQt, leider in Qt3 gehalten.
Der hier aufgeführte CodeSnippe ist für Qt4.
Code: Alles auswählen
#include <FreeImage.h>
.......
QImage MyClass::LoadTgaFile( const QString &name ) {
if( name.isEmpty() || name.isNull() )
return QImage();
FREE_IMAGE_FORMAT fif = FreeImage_GetFIFFromFilename( QString( name ).toAscii().data() );
FIBITMAP *bitmap;
if( fif == FIF_TARGA )
bitmap = FreeImage_Load( fif, QString( name ).toAscii().data(), 0 );
else
return QImage();
QImage img;
if( bitmap ) {
if( FreeImage_GetBPP( bitmap ) == 32 )
bitmap = FreeImage_ConvertTo24Bits( bitmap );
int _width = FreeImage_GetWidth( bitmap );
int _height = FreeImage_GetHeight( bitmap );
if( FreeImage_IsTransparent( bitmap ) ) {
QImage image( _width, _height, QImage::Format_ARGB32 );
img = image;
} else {
QImage image( _width, _height, QImage::Format_RGB32 );
img = image;
}
img.setDotsPerMeterX( (FreeImage_GetDotsPerMeterX != NULL) ? FreeImage_GetDotsPerMeterX( bitmap ) : 0 );
img.setDotsPerMeterY( (FreeImage_GetDotsPerMeterY != NULL) ? FreeImage_GetDotsPerMeterY( bitmap ) : 0 );
for( unsigned a = 0; a < FreeImage_GetHeight( bitmap ); a++ ) {
if( FreeImage_GetBPP( bitmap ) == 24 ) {
FreeImage_ConvertLine24To32( img.scanLine( FreeImage_GetHeight( bitmap ) - 1 - a ), FreeImage_GetScanLine( bitmap, a ), FreeImage_GetWidth( bitmap ) );
} else {
memcpy( img.scanLine( FreeImage_GetHeight( bitmap ) - 1 - a ), FreeImage_GetScanLine( bitmap, a ), FreeImage_GetWidth( bitmap ) );
}
}
}
FreeImage_Unload( bitmap );
return img;
}