Vielleicht hilft dir der folgende Code etwas, damit kannst du tga files speichern.
Code:
void SCHREIBE_TGA_8(var shadow_byte)                                                               // schreibe char
{
	file_asc_write (Filehandle,shadow_byte);
}
	
void SCHREIBE_TGA_16(var shadow_short)                                                             // schreibe unsigned shadow_short
{
	file_asc_write (Filehandle,shadow_short&255);
	file_asc_write (Filehandle,(shadow_short>>8)&255);
}
	
void SCHREIBE_TGA_BILD(BMAP* MY_BMAP,STRING* MY_STR)                                               // ***** SPEICHERT DAS BILD IM TGA - FORMAT ***** //
{
	var format = 0;
	var pixel = 0;
	var pixel_alpha = 0;
	
	Temp_vec1.x = bmap_width  (MY_BMAP);
	Temp_vec1.y = bmap_height (MY_BMAP);
	
	format = bmap_lock (MY_BMAP,0);
	
	Filehandle = file_open_write (MY_STR);
	//----------------------------------------------------------------------------------------------// schreibe Header der tga Datei
	SCHREIBE_TGA_8(0);
	SCHREIBE_TGA_8(0);
	SCHREIBE_TGA_8(2);                                                                              // ild Typ: 10 = RLE komprimierte tga, 2 = unkomprimierte tga
	SCHREIBE_TGA_16(0);
	SCHREIBE_TGA_16(0);
	SCHREIBE_TGA_8(0);
	SCHREIBE_TGA_16(0);
	SCHREIBE_TGA_16(0);
	SCHREIBE_TGA_16(Temp_vec1.x);                                                                   // Breite
	SCHREIBE_TGA_16(Temp_vec1.y);                                                                   // Höhe
	SCHREIBE_TGA_8(32);                                                                             // 24 oder 32 für Alphakanal
	SCHREIBE_TGA_8(0);
	//----------------------------------------------------------------------------------------------// schreibe Bilddaten der tga Datei
	for (i=0; i < Temp_vec1.x * Temp_vec1.y; i++)
	{
		pixel = pixel_for_bmap (MY_BMAP, i%Temp_vec1.x, (Temp_vec1.y-1)-integer(i/Temp_vec1.x));
		pixel_to_vec (Temp_col1,pixel_alpha,format,pixel);
		pixel_alpha *= 2.55;                                                                         // wandle alpha von 0 bis 100 --> 0 bis 255
		SCHREIBE_TGA_8 (Temp_col1.blue);                                                             // b
		SCHREIBE_TGA_8 (Temp_col1.green);                                                            // g
		SCHREIBE_TGA_8 (Temp_col1.red);                                                              // r
		SCHREIBE_TGA_8 (pixel_alpha);                                                                // alpha
	}
	file_close(Filehandle);
	bmap_unlock(MY_BMAP);
}


Rufe einfach "SCHREIBE_TGA_BILD(bmap_pointer,speichername);" zum speichern auf. Diese Files sind genau so gross wie das ursprüngliche Bild.

EDIT: du musst noch einen Vector (Temp_vec1) und eine Color (Temp_col1) definieren...

Last edited by Widi; 01/05/11 15:27.