?
						
					
					
						
					
				
				
					Hi,
wenn du einfach Daten Komprimieren willst kannst du das PCX Line Pack verwenden:
 ... Code ... 
//lädt komprimierte Daten nach dem PCX-Decodierverfahren map= adresse anz=menge fp=filestream 
void pcx_readmap(unsigned long map,unsigned long anz,FILE *fp)
{
  unsigned char c,press;               
  unsigned long  j=0;                 
 
  while(j < anz)           //j noch kleiner als Datenmenge ?                        
  {
    c = fgetc(fp);          //lade ein Datenbyte                     
    press=1;                //Länge der Datenmenge vorerst 1                
                                  
    if((c&192) > 128)      //ist dieses Datenbyte ein Kompress-schlüssel?               
    { 
       press = (c & 63);    //neue Länge der Daten = kompressschlüssel&63             
       c = fgetc(fp);       //lade tatsächliches Datenbyte (nextbyte)             
    }
    //schreibe das Datenbyte in den Speicher bis press abgelaufen ist
    while(press--) *((unsigned char *) (j+++map))=c;            
  }
}
//öffnet eine PCX Datei namens fname und ließt die Colordaten nach *colmem
FILE *pcx_open(unsigned char *fname,unsigned char *colmem)
{
 FILE *fp=0;                    
 short j=(SCOL*3)*(SBPP>>3); //so viele Farbbytes werden gelesen                   
 if((fp=fopen(fname,"rb")))   //open PCX  
 {
   fseek(fp,-(SCOL*3)*(SBPP>>3),2); //zum ende der Datei minus Farbbyteanzahl          
   while(j--) *colmem++ = (unsigned char)(fgetc(fp)); //Farben einlesen
   fseek(fp,128,0);                    //Re.Positionieren 128byes unter Dateibeginn
 } 
 return(fp);
}
short pcx_close(FILE *fp) 
{
  return((short)fclose(fp));
}
//lädt eine beliebige Anzahl von PCX Bildern in den Speicher adr ,die Bilder müssen
//die Namen 0.pcx 1.pcx 2.pcx ...usw. heißen, sie müssen im aktiven Verz. zu finden sein
short pcx_loadanz(short anz,unsigned long mapadr,unsigned long coladr)
{
 FILE *fp;
 short i;                     
 char ftxt[10];             //Dateinamenshalter
 unsigned long offset=0;   //offset des nächsten Bildes im Speicher
                      
 for(i=0; i<anz; i++)      //lese BitMapDaten der menge Anzahl             
 {
   sprintf(&ftxt[0],"%d",i); //erzeuge Dateinamen aus Nummer                       
   strcat(&ftxt[0],".pcx");  //Dateiendung .PCX anketten                              
   if( (fp = pcx_open(&ftxt[0],(char *)coladr)) ) //open PcxFile
   {
     pcx_readmap((unsigned long) mapadr+offset,POS(PCXW,PCXH),fp); //lese Kompressmap
     pcx_close(fp);                                         
   }else return(0);                                     
   offset+=POS(PCXW,(PCXH-1));  //nächstes bild an diese adresse  +mapadr                           
 }
  return(i);
}
Und wenn Du es richtig machen willst lohnt es sich ultimativ die ADLER PackLib selber zu kompilieren : https://github.com/madler/zlib
Gruß
Karsten