Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Pixel(Farbwerte) aus einer Bitmap datei auslesen (https://www.delphipraxis.net/127173-pixel-farbwerte-aus-einer-bitmap-datei-auslesen.html)

gaui 8. Jan 2009 20:20


Pixel(Farbwerte) aus einer Bitmap datei auslesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo alle zusammen,
Ich muss eine Facharbeit über steganografie schreiben und dazu muss ich noch ein Programm programmieren. Da ich bei einem Punkt nicht weier komme frage ich euch mal ;) könnt ihr mir helfen aus einer Bitmap datei die einzelnen Farbwerte auszulesen. Aus der Delphi hilfe werde ich nicht wirklich schlau. Das bisherige Projekt is zum download da. thx im vorraus

Klaus01 8. Jan 2009 20:31

Re: Pixel(Farbwerte) aus einer Bitmap datei auslesen
 
Guten Abend,

an die einzelnen Pixel kommst Du so ran:

Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  color : TColor;
  x,y : Integer;
begin
  for x:=0 to Image1.Picture.Bitmap.Width -1 do
    for y:=0 to Image1.Picture.Bitmap.Height -1 do
     color :=Image1.Picture.Bitmap.Canvas.Pixels[x,y];
end;
Aus der Hilfe:
Zitat:

If you specify TColor as a specific 4-byte hexadecimal number instead of using the constants defined in the Graphics unit, the low three bytes represent RGB color intensities for blue, green, and red, respectively. The value $00FF0000 represents full-intensity, pure blue, $0000FF00 is pure green, and $000000FF is pure red. $00000000 is black and $00FFFFFF is white.
Du musst den TColor Wert nur entsprechend maskieren um die einzelnen Farbwerte zu bekommen.

Delphi-Quellcode:
blue := color and $00FF0000;
green := color and $0000FF00;
red := color and $000000FF;
Grüße
Klaus

Namenloser 8. Jan 2009 20:33

Re: Pixel(Farbwerte) aus einer Bitmap datei auslesen
 
Zitat:

Zitat von Klaus01
Delphi-Quellcode:
blue := color and $00FF0000;
green := color and $0000FF00;
red := color and $000000FF;

Bitshifting nicht vergessen!

Delphi-Quellcode:
blue := (color and $00FF0000) shr 16;
green := (color and $0000FF00) shr 8;
red := color and $000000FF;
(wenn ich mich nicht irre)

Fussball-Robby 8. Jan 2009 22:05

Re: Pixel(Farbwerte) aus einer Bitmap datei auslesen
 
Genau, warum einfach, wenns auch kompliziert geht!? :wink: Delphi stellt bereits Funktionen dazu bereit: Delphi-Referenz durchsuchenGetRValue, Delphi-Referenz durchsuchenGetGValue, Delphi-Referenz durchsuchenGetBValue

gaui 10. Jan 2009 16:33

Re: Pixel(Farbwerte) aus einer Bitmap datei auslesen
 
ich hab mal ne frage wenn ich das jetzt bei delphi einfüge direkt in buttonclick einfüge dann kommt immer ein fehler

Matze 10. Jan 2009 16:35

Re: Pixel(Farbwerte) aus einer Bitmap datei auslesen
 
Sage uns doch bitte, welcher Fehler kommt und zeige die Prozedur. Sonst können wir hier nur raten. ;)

Bernhard Geyer 10. Jan 2009 16:35

Re: Pixel(Farbwerte) aus einer Bitmap datei auslesen
 
Zitat:

Zitat von gaui
ich hab mal ne frage wenn ich das jetzt bei delphi einfüge direkt in buttonclick einfüge dann kommt immer ein fehler

Und welcher? Glaskugel ist gerade defekt :-)

gaui 10. Jan 2009 17:10

Re: Pixel(Farbwerte) aus einer Bitmap datei auslesen
 
error:kein zugriff könnt es mal probieren is das projekt am anfang des themas

Klaus01 10. Jan 2009 17:46

Re: Pixel(Farbwerte) aus einer Bitmap datei auslesen
 
Na hör mal gaui,

an dem Projekt hast Du ja seit einer Woche noch nichts dran geändert.
Die Auswertung der Pixel ist auch noch nicht drinnen.

Und erklär mal bitte dieses Kuddelmuddel:

Delphi-Quellcode:
procedure TForm1.bBildladenClick(Sender: TObject);
begin

 //TForm1 OnCreate;
begin
  DasBitmap := TBitmap.Create;
end;
      if Open.Execute then
      begin
      if Open.Execute then begin
       DasBitmap.LoadFromFile(Open.FileName);
       Image1.Picture.Bitmap.Assign(DasBitmap)
       end;
      end;



end;
Delphi-Quellcode:
procedure TForm1.bBildladenClick(Sender: TObject);
begin
  //DasBitmap := TBitmap.Create; das lieber im onCreate erstellen
  //                                und im onClose wieder freigeben
  if Open.Execute then
    begin
      DasBitmap.LoadFromFile(Open.FileName);
      Image1.Picture.Bitmap.Assign(DasBitmap)
     end;
end;
..und bring das Projekt mal auf den neuesten Stand.
Grüße
Klaus


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