Einzelnen Beitrag anzeigen

Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Bitmaps vergleichen

  Alt 11. Jul 2020, 02:54
Sehr schön, dankesehr

Zwei Fragen:
Du schreibst dass Du Alles in 24-Bit wandelst, auch 32-Bit Bilder.
Warum nimmst Du nicht gleich 32-Bit, so wie Graphics32 ?
Hat der 24-Bit Raum irgendwelche Vorteile für Dich ?

Mit den RAL-Farben verstehe ich nicht ganz.
Das sind Printfarben, die kann man doch eigentlich nicht am Bildschirm darstellen.
Ist das die nächstbeste Farbe die der RAL entspricht, oder
gibt es einen "offiziellen" Algorithmus der irgendeine Farbe zu RAL umwandeln kann ?
Zitat:
Du schreibst dass Du Alles in 24-Bit wandelst, auch 32-Bit Bilder
Ich schrieb "Bei Formaten <> *.Bmp werden die Bilder in 24Bit-Bitmaps umgewandelt.", also:
Nur wenn zum Beispiel ein .jpg geladen wird, wird die in eine 24Bit Bitmap umgewandelt.
Wenn eine .bmp Datei geladen wird, bleibt die im Original-Format.
Ausnahme:
Wenn bei einer .bmp Datei das Pixelformat=pfCustom und biBitCount=16 ist, wird das so gehandhabt:
A) Die Datei enthält Masken für Rot, Grün, Blau.
Dann wird aus den Masken entweder pf15bit oder pf16bit abgeleitet.
B) Die Datei enthält keine Farbmasken.
Dann werden die Farbmasken RMask:=$7C00; GMask:=$03E0; BMask:=$001F; benutzt und als PixelFormat pf15bit.
Da habe ich unsauber gearbeitet.
Korrekterweise sollte ich in diesem Fall alle 16Bit-Farbwerte der Bitmap prüfen.
Wenn zumindest bei einem Pixel das höchste Bit gesetzt ist sollte ich die Standardmasken für pf16Bit verwenden und als Pixelformat pf16bit.
Das werde ich in den nächsten Tagen ändern.
Danke für die Rückfrage - erst dadurch habe ich registriert, dass ich das Pixelformat aus den Farbdaten ableiten kann.

Zitat:
Warum nimmst Du nicht gleich 32-Bit, so wie Graphics32 ?
Hat der 24-Bit Raum irgendwelche Vorteile für Dich ?
Aus Gewohnheit und aus Speicherplatz-Gründen.
Die Umwandlung in 24Bit Bitmaps erfolgt ja nur bei Dateiformaten <> .bmp und z.B. JPEG kann nur pf8bit und pf24bit, zumindest die mir vorliegende Version.

Zitat:
Mit den RAL-Farben verstehe ich nicht ganz.
Das sind Printfarben, die kann man doch eigentlich nicht am Bildschirm darstellen.
Ist das die nächstbeste Farbe die der RAL entspricht, oder
gibt es einen "offiziellen" Algorithmus der irgendeine Farbe zu RAL umwandeln kann ?
Ich ordne einem RGB-Wert die RAL-Farbe zu, bei der die maximale Abweichung der Rot-, Grün-, Blauwerte am kleinsten ist.
Ein "offizieller" Algorithmus ist mir nicht bekannt.
Bei der Tabelle der RAL-Farben handelt es sich um die RAL-Classic-Farben.
Die hab ich vor ein paar Jahren auf http://www.ral-farben.de gefunden.
Delphi-Quellcode:
FUNCTION NearestRalColorIndex(CL:TColor):Integer;
var I,D,MinD:Integer;
begin
   MinD:=MaxInt;
   Result:=0;
   for I:=0 to High(RalColors) do
      with RalColors[I], TRgb(CL) do begin
         D:=Max(Max(Abs(Red-R),Abs(Green-G)),Abs(Blue-B));
         if D<MinD then begin
            MinD:=D;
            Result:=I;
         end;
      end;
end
;
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat