Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Farbinformationen von Bitmap auslesen/ändern (https://www.delphipraxis.net/14425-farbinformationen-von-bitmap-auslesen-aendern.html)

Jan 9. Jan 2004 00:39


Farbinformationen von Bitmap auslesen/ändern
 
Guten Abend Delphianer!

Ich möchte euch fragen wie ich die Farbdaten eines Bitmaps bekomme. Mit der Eigenschaft Tpixelformat von Tbitmap komme ich an die Farbtiefe heran, was ich aber wissen will, ist ob das Bitmap in YUV oder in RGB gespeichert ist. Und wenn ich dann herausbekomme dass das Bild als RGB gespeichert ist muss ich noch wissen, wie ich es in YUV umwandle.
Dann habe ich auch nicht herausfinden können wie ich die farbinformationen zu einem einzelnen pixel auslesen kann, nur wie ich auf ein canvas schreiben kann, und das nutzt mir eigentlich nicht, weil ich nämlich die farbwerte zu jedem einzelnen pixel lesen und schreiben können muss.
Für jede Hilfe wäre ich sehr dankbar!

Gruß
Jan

himitsu 9. Jan 2004 01:15

Re: Farbinformationen von Bitmap auslesen/ändern
 
Ein Delphi-BitMap (TBitMap) speichert die Farbwerte nur im RGB-Format ab. (nicht YUV, oder ähnliches)

Code:
BitMap.PixelFormat =
  pf1bit > Bitmap mit einem Bit pro Pixel (Schwarzweiß-Palette)
  pf4bit > Bitmap, das eine Palette mit 16 Farben verwendet
  pf8bit > Bitmap, das eine Palette mit 256 Farben verwendet

  Farbpalette für pf1bit, pf4bit oder pf8bit > 32 Bits pro Farbwert (RGB-Komprimierung)


  pf15bit > True-Color-Bitmap mit 15 Bits pro Pixel (RGB-Komprimierung)
  pf16bit > True-Color-Bitmap mit 16 Bits pro Pixel (Bitfeld-Komprimierung)
  pf24bit > True-Color-Bitmap mit 24 Bits pro Pixel
  pf32bit > True-Color-Bitmap mit 32 Bits pro Pixel (RGB-Komprimierung)
Delphi-Quellcode:
Var X, Y: Integer;
  Rot, Gruen, Blau: Byte
  Farbe: TColor;

{Pixel schreiben}
BitMap.Canvas.Pixels[X, Y] := RGB(Rot, Gruen, Blau);

{Pixel schreiben}
Farbe := Rot or (Gruen shl 8) or (Blau shl 16);
BitMap.Canvas.Pixels[X, Y] := Farbe;

{Pixel lesen}
Farbe := BitMap.Canvas.Pixels[X, Y];
Rot := Farbe and $FF;
Gruen := (Farbe shr 8) and $FF;
Blau := (Farbe shr 16) and $FF;
(Angaben ohne Gewähr)

Bei weiteren Fragen siehe OH.

Jan 9. Jan 2004 02:27

Re: Farbinformationen von Bitmap auslesen/ändern
 
Hallo himitsu,
danke für deine Antwort. Leider ist das ganz und garnicht was ich zu hören erhofft hatte.
Der erste Source-bereich deines Comments steht ja so in der Delphi-Hilfe, wo ich ihn auch gesehen habe, hilft mir aber leider nicht weiter.
Gibt es denn garkeine Möglichkeit in Delphi die Farbwerte in YUV umzuwandeln, in einem Array zu speichern und dann wieder in ein Bitmap auf meiner Platte zu schreiben?

RGB nutzt mir nämlich leider nichts, da es in meinem Programm um die Simulierung einer Skalierung von Bildern im YUV-Farbformat geht.

Gruß
Jan

himitsu 9. Jan 2004 02:47

Re: Farbinformationen von Bitmap auslesen/ändern
 
In dem BitMap selber kannst du die Farbwerte nicht als YUV speichern.

Es besteht aber die Möglichkeit den Farbwert als RGB auszulesen, in YUV umsuwandeln, zu bearbeiten (als YUV), wieder zurück umzuwandeln (in RGB) und wieder im BitMap zu speichern (als RGB).

Für Umwandlung und so - siehe Hier im Forum suchenYUV RGB




Pixel im BitMap => RGB => YUV

verarbeiten (als YUV)

YUV => RGB => Pixel im BitMap

Jan 9. Jan 2004 04:10

Re: Farbinformationen von Bitmap auslesen/ändern
 
Mein Dank geht nochmal an Himitsu für seine Mühen :thuimb:
Ich hab die Suche auch schon benutzt komme aber anhand der Umwandlung eines 24bit BMPs in ein Grayscale BMP net weiter, weil da nämlich immer in den Prozeduren direkt in Grau umgerechnet wird.
Was mir vorerst alle Probleme lösen würde wäre eine Möglichkeit die Farbwerte meines geladenen Bitmaps einfach in YUV umzuwandeln ohne die Farbe mehr als nötig zu verändern und diese dann in einen 2-Dimensionalen Array vom Typ "Packed Record" speichern. Dann könnte ich mit den Farbwerten machen was ich will.

Noch eine Anfängerfrage:

Wenn Delphi ein BMP auch nicht in YUV darstellen will, kann ich denn dann wenigstens mit Delphi ein YUV BMP auf Platte speichern, oder ist das einfach nicht möglich?

Gruß
Jan

Jan 9. Jan 2004 16:21

Re: Farbinformationen von Bitmap auslesen/ändern
 
Kann mir da vielleicht noch jemand helfen?
:angle:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:40 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