Einzelnen Beitrag anzeigen

cyborg

Registriert seit: 15. Jan 2003
24 Beiträge
 
Delphi 7 Personal
 
#3
  Alt 22. Mär 2003, 23:23
Okay, nachdem die Hilfe nicht besonders viel gebracht hat (ich versuche die API soweit wie möglich nur im notfall zu benutzen, sonst könnt ich genauso C++ verwenden) habe ich es dennoch mit einem trick geschafft...:

frei nach meiner funktion wie ich es mache
Delphi-Quellcode:
//datentypen:
// BitmapXXbit = Bitmap mit 24, 32 usw. Bit
// Bitmap8Bit = Bitmap mit 256 Farben
// JPG = TJPegImage (uses jpeg!!) als utility
// Reduzieren der Bitmap Qualität mit dem Palette Optimizing von JPEG
Function BMPReduceTo8Bit(BitmapXXBit: TBitmap): TBitmap;
VAR
JPG: TJPegImage;
Bitmap8bit: TBitmap;

Begin
IF BitmapXXBit<>nil then begin
  JPG:=TJpegImage.Create;
  JPG.CompressionQuality:=100; // <--damit die bitmap nicht komprimiert wird
  JPG.Assign(BitmapXXBit); //<- BitmapXXBit -> JPG

  JPG.JPEGNeeded; // <-- verwandle in JPEG!
  JPG.PixelFormat:=jf8bit; // 8 bit reduzierung
  JPG.DibNeeded; // palette wird neu geschrieben, wieder bitmap fähig

  bitmap8bit:=TBitmap.Create;
  bitmap8bit.PixelFormat:=pf8bit;
  bitmap8bit.Assign(JPG); // JPG (8bit,opt.palette) -> BMP (8bit)
// bitmap8bit.SaveToFile('whatever.bmp'); <-speichern

  JPG.Free;
  
  Result:=Bitmap8Bit;
end; // if %Bmp ned nil
end; // Proc %bmp8bit
  Mit Zitat antworten Zitat