Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wie kann ich in guter Qualität 24Bit zu 8Bit konvertieren ? (https://www.delphipraxis.net/158850-wie-kann-ich-guter-qualitaet-24bit-zu-8bit-konvertieren.html)

thomas2009 5. Mär 2011 10:38


Wie kann ich in guter Qualität 24Bit zu 8Bit konvertieren ?
 
hi

natürlich wenn man ein Bitmap von oben von 24Bit nach unten 8Bit die Farbe reduziert, verliert das Bild ein Bisschen Qualität

muss man eine Funktion erstellen, die das Bitmap von 24Bit zu 8Bit konvertiert ?

oder reicht es, wenn ich folgendes machen :|
Delphi-Quellcode:
var
my8bit : TBitmap;
begin
my8Bit:=TBitmap.Create;
my8Bit.assign(Image1.Picture.Bitmap); // image1: 24Bit
my8Bit.Pixelformat:=pf8Bit;
...

mkinzler 5. Mär 2011 10:50

AW: Wie kann ich in guter Qualität 24Bit zu 8Bit konvertieren ?
 
Höchst wahrscheinlich gar nicht.
Bei 24Bit hast du 8Bit pro Farbe (RGB). Ein 8-Bit Bild verwendet eine Farbpalette, wobei jeder Eintrag der Palette 6Bit pro Farbe verwendet.
Zuerst musst du mal ermitteln, wieviel verschiedene Farbwerte im 24Bit Bild enthalten sind, wenn dies weniger als 256 sind, dann musst du die einzelnen Werte auf die 18Bit zu mappen.
Bei mehr als 256 Farbwerten, müssen dann mehrere Farbwerte auf den selben Wert abgebildet werden.

thomas2009 5. Mär 2011 12:00

AW: Wie kann ich in guter Qualität 24Bit zu 8Bit konvertieren ?
 
hier im Forum habe ich diese Funktion gefunden und schon getestet. es ist OK
Wenn ich das Bitmap direkt über die Funktion selbst speichere dann funktioniert
aber wenn ich das Bild durch Aufruf über das Button,
dann wird das Bild nicht in 8bit sondern in 24 Bit konvertiert !

Vielleicht rufe ich die Funktion falsch auf :
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Image1.Picture.LoadFromFile('24BitBild.bmp');
BMPReduceTo8Bit(image1.Picture.Bitmap); // ist richtig so ?
Image1.Picture.Bitmap.SaveToFile('8BitBild.bmp');

Hier ist die Funktion

Capa 5. Mär 2011 12:17

AW: Wie kann ich in guter Qualität 24Bit zu 8Bit konvertieren ?
 
da das ganze eine funktion ist solltest du es vielleicht so aufrufen

Function BMPReduceTo8Bit(BitmapXXBit: TBitmap): TBitmap;

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Image1.Picture.LoadFromFile('24BitBild.bmp');
  Image1.Picture.Bitmap := BMPReduceTo8Bit(image1.Picture.Bitmap);
  Image1.Picture.Bitmap.SaveToFile('8BitBild.bmp');
end;
Kannst auch ein 2tes Image erstellen

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Image2: TImage;
begin
  Image2 := TImage.Create;
  Image1.Picture.LoadFromFile('24BitBild.bmp');
  Image2.Picture.Bitmap := BMPReduceTo8Bit(image1.Picture.Bitmap);
  Image2.Picture.Bitmap.SaveToFile('8BitBild.bmp');
end;

thomas2009 5. Mär 2011 13:05

AW: Wie kann ich in guter Qualität 24Bit zu 8Bit konvertieren ?
 
Es ging. Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz