AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Farbinformationen von Bitmap auslesen/ändern
Thema durchsuchen
Ansicht
Themen-Optionen

Farbinformationen von Bitmap auslesen/ändern

Ein Thema von Jan · begonnen am 9. Jan 2004 · letzter Beitrag vom 9. Jan 2004
Antwort Antwort
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#1

Farbinformationen von Bitmap auslesen/ändern

  Alt 9. Jan 2004, 01:39
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
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: Farbinformationen von Bitmap auslesen/ändern

  Alt 9. Jan 2004, 02:15
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Farbinformationen von Bitmap auslesen/ändern

  Alt 9. Jan 2004, 03:27
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
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: Farbinformationen von Bitmap auslesen/ändern

  Alt 9. Jan 2004, 03:47
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
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Farbinformationen von Bitmap auslesen/ändern

  Alt 9. Jan 2004, 05:10
Mein Dank geht nochmal an Himitsu für seine Mühen
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
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Farbinformationen von Bitmap auslesen/ändern

  Alt 9. Jan 2004, 17:21
Kann mir da vielleicht noch jemand helfen?
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz