Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Bitmap Datein in Delphi anzeigen und andere sachen (https://www.delphipraxis.net/126631-bitmap-datein-delphi-anzeigen-und-andere-sachen.html)

gaui 29. Dez 2008 23:20


Bitmap Datein in Delphi anzeigen und andere sachen
 
Hallo erstmal! Also bin neu und hab ein paar fragen. Also ich muss eine Facharbeit (Jgst 12) über Bild Steganografie schreiben. Nun ja mein Lehrer verlangt von mir zusätzlich ein Programm mit dem man Nachrichten in Bildern verschlüsseln und entschlüsseln kann. Nur hab ich keine Ahnung wie ich eine bmp Datei in Delphi laden bzw. die einzelnen Pixel auslesen soll. Hab mir zwar die Delphi hilfe durchgelesen aber so richtig schlau geworden bin ihc daraus nicht. Da steht etwas über die Klasse TCanvas aber die kann nur create und so einige andere Methoden. Könnte mir da jemand vieleicht helfen?? Schön mal danke im voraus und Guten Rutsch euch allen!

rollstuhlfahrer 29. Dez 2008 23:34

Re: Bitmap Datein in Delphi anzeigen und andere sachen
 
HI und willkommen in der DP.

Deine Bilder lädst du am besten und einfachsten in ein TBitmap.
BSP:
Delphi-Quellcode:
procedure TForm1.Landen(DatName: TFileName);
var
  Bild: TBtmap;
begin
  Bild := TBitmap.Create;
  Bild.LoadFromFile(DatName);   // Muss als Endung unbedingt .bmp haben
  Bild.Free;  // keine Speicherprobleme erzeugen
end;
So und das Bild ist dann auch gleich wieder aus dem Speicher gefegt. (Was für'n Schwachsinn :-*)

Auf die einzelnen Pixel wolltest du mit TCanvas zugreifen, was auch nicht abzuraten ist.

Delphi-Quellcode:
procedure TForm1.GetFarbe(var r, g, b: Byte; Bild: TBitmap; X, Y: Integer);
var
  Farbe: TColor;
begin
  Farbe := Bild.Canvas.Pixels[X, Y];
  r := GetRValue(Farbe);
  b := GetBValue(Farbe);
  g := GetGValue(Farbe);
end;
Bernhard

Guten Rutsch

gaui 30. Dez 2008 00:33

Re: Bitmap Datein in Delphi anzeigen und andere sachen
 
oke das is alles so naja schön xD aber ich kenn mich da net wirklich aus programmiere erst seit einem Jahr also erstmal wenn ich ein neues Projekt erstelle muss ich doch irgendwie einen auslöser haben z.B. einen Button. So wenn ich jetzt den Button habe dann muss ich doch erst die Klasse Tbitmap erstellen um mit ihr zu arbeiten.
Also bei mir sieht das dann folgender Maßen aus:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    bBildladen: TButton;
    procedure bBildladenClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Bitmap1: Tbitmap;

implementation

{$R *.DFM}

procedure TForm1.bBildladenClick(Sender: TObject);
var lBild:TBitmap;
begin
     lBild:= TBitmap.create;
     lBild.LoadFromFile(xxx)


end;

end.

Mein Problem ist jetzt da das ich zunächst nicht weiß wie ich den Dateinamen für LoadfromFIle angeben soll.
Wäre nett wenn sie es mir erklären würden und nicht nur die lösung hinschreiben:) weil ich hab vor Informatik als ein Abi fach zuwählen und wenn ich das dann nicht verstehe ist das schlecht :)

[edit=Sharky][delphi]-Tag gesetzt. Bitte verwende diese in Zukunft. Mfg, Sharky[/edit]

Sunlight7 30. Dez 2008 01:10

Re: Bitmap Datein in Delphi anzeigen und andere sachen
 
Zitat:

Zitat von rollstuhlfahrer
// Muss als Endung unbedingt .bmp haben

Stimmt nicht, es könnte auch ein .wmf oder .emf sein

@gaui:
Wenn Deine Bitmaps immer im selben Verzeichnis sind, kannst Du
Delphi-Quellcode:
Bitmap.LoadFromFile('C:\DeinPfad\DeinBitmap.bmp');
verwenden.


Soll es aus dem Verzeichnis geladen werden, wo Deine Exe drinnen ist dann:
Delphi-Quellcode:
Bitmap.LoadFromFile(ExtractFileDir(Application.ExeName)'\DeinBitmap.bmp');
Oder wenn es der Benutzer selber laden können soll, dann suchst Du im Forum nach Hier im Forum suchenTOpenDialog und verwendest dann
Delphi-Quellcode:
Bitmap.LoadFromFile(OpenDialog1.FileName);
Zitat:

Zitat von gaui
Bitmap Datein in Delphi anzeigen und andere sachen

Für die anderen Sachen, dann bitte neue Threads, pro Thread soll es nur um ein Thema gehen ;)

guidok 30. Dez 2008 06:14

Re: Bitmap Datein in Delphi anzeigen und andere sachen
 
Hallo!

In deinem Fall würde ich die Variable für das Bitmap in die Private-Sektion des Form verschieben, im OnCreate-Ereignis des Formulars erzeugen und im OnDestroy-Ereignis wieder freigeben. Damit hast du mit dem Erzeugen des Formulars bereits eine Instanz für dein Bitmap, die beim Beenden wieder entfernt wird.

Delphi-Quellcode:
type
TForm1 = class(TForm)
bBildladen: TButton;
procedure bBildladenClick(Sender: TObject);
private
{ Private-Deklarationen }
  DasBitmap: TBitmap;
public
{ Public-Deklarationen } 
end;

var
Form1: TForm1;

implementation

{$R *.DFM} 


//TForm1 OnCreate;
begin
  DasBitmap := TBitmap.Create;
end;

//TForm1 OnDestroy;
begin
  DasBitmap.Free;
end;    

end;

end.
Für das Laden des Bildes würde ich auch auf jeden Fall einen TOpenDialog nehmen. Diesen findest du in der Tool-Palette unter "Dialoge". Schau dir dabei auch mal die Eigenschaften im Objektinspektor an. Interessant für dich könnte u.a. "Filter" sein. Damit kannst du dir nur Dateien mit einer bestimmten Endund (z.B. *.bmp) anzeigen lassen. Der Dialog lässt sich beispielsweise in einer ButtonClick-Prozedur aufrufen:

Delphi-Quellcode:
procedure TfMain.btBildLadenClick(Sender: TObject);
begin
  if OpenDialog.Execute then begin //Execute ist True, wenn du den FileDialog mit dem Klicken des OK-Button beendest.
  DasBitmap.LoadFromFile(OpenDialog.FileName); //Hier lädst du jetzt das Bild
  end;
end;
Zum Anzeigen auf dem Formular bietet sich ein TImage an. Diesem kannst du das geladene Bitmap zur Anzeige zuweisen (mit Image.Picture.Bitmap.Assign).

gaui 30. Dez 2008 09:11

Re: Bitmap Datein in Delphi anzeigen und andere sachen
 
oke direkt ne Frage zu diesem oncreate und on destroy sind das Methoden von TForm? und dieses TOPenDialog wo krieg ich das im Forum her
? weil ihc muss das ja als ein Tool für Delphi einfügen? danke schon mal für die Hilfe

gaui 30. Dez 2008 09:15

Re: Bitmap Datein in Delphi anzeigen und andere sachen
 
und wenn ich das so mach
Zitat:

Bitmap.LoadFromFile(ExtractFileDir(Application.Exe Name)'\DeinBitmap.bmp');
dann erscheint eine Access Vialotion

Klaus01 30. Dez 2008 09:16

Re: Bitmap Datein in Delphi anzeigen und andere sachen
 
onCreate und onDestroy sind Ereignisse von TForm
TOpenDialog findest Du unter dem Reiter Dialoge (Dialogs).

Delphi-Quellcode:
Bitmap.LoadFromFile(ExtractFileDir(Application.ExeName)+'\DeinBitmap.bmp');
Da fehlt zumindest ein Pluszeichen.

Grüße
Klaus

gaui 30. Dez 2008 09:50

Re: Bitmap Datein in Delphi anzeigen und andere sachen
 
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    bBildladen: TButton;
    Image1: TImage;
    OpenDialog1: TOpenDialog;
    procedure bBildladenClick(Sender: TObject);
    procedure OpenDialog1CanClose(Sender: TObject; var CanClose: Boolean);
  private
    { Private-Deklarationen }
    Bitmap1: Tbitmap;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;



implementation

{$R *.DFM}

procedure TForm1.bBildladenClick(Sender: TObject);
var lBild:TBitmap;
begin
    // lBild:= TBitmap.create;
     //Image1:= lBild.LoadFromFile('D:\Dokumente und Einstellungen\Admin\Desktop\Informatik1')


end;

procedure TForm1.OpenDialog1CanClose(Sender: TObject;
  var CanClose: Boolean);
begin
     if OpenDialog1.Execute then
     begin
     Bitmap1.LoadFromFile(OpenDialog1.Bilder);
     end;
end;
so das steht bei mir da
Zitat:

Bitmap1.LoadFromFile(OpenDialog1.Bilder);
nur öffnet der den Ordner Bilder nicht er kennt den Begriff einfach nicht. Das zweite Problem is das er diesen OpenDialog zwar im Formular anzeigt aber nicht im Debugger

[edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit]

Klaus01 30. Dez 2008 09:53

Re: Bitmap Datein in Delphi anzeigen und andere sachen
 
versuche mal

Delphi-Quellcode:
Bitmap1.LoadFromFile(OpenDialog1.FileName);
Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:58 Uhr.
Seite 1 von 5  1 23     Letzte »    

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