Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Picture2Bitmap (https://www.delphipraxis.net/76116-picture2bitmap.html)

backdraft 30. Aug 2006 07:45


Picture2Bitmap
 
Hallo,

ich habe ein Bild mit
Delphi-Quellcode:
SetOlePicture(Image1.Picture, MODIMiDocView1.ImageSelection.ExportToPicture(0, 0));
in meine Eigenschaft Picture geladen.

Ich muss auf das Bild aber jetzt als Bitmap zugreifen.
Wie bekomme ich es jetzt hin, das ich in der Eigenschaft
Delphi-Quellcode:
Image1.Picutre.Bitmap
auch das Bild habe?
Falls ich darauf zugreife, sagt er mir, dass das Bitmap ungültig ist.

Danke Oliver

Mavarik 30. Aug 2006 07:52

Re: Picture2Bitmap
 
Zitat:

Zitat von backdraft
Falls ich darauf zugreife, sagt er mir, dass das Bitmap ungültig ist.

Danke Oliver

Bist Du Dir sicher, dass es sich dabei um eine *.BMP handelt?

Es könnte eine JPEG Datei sein, oder über OLE werden META Daten übertragen...?!?

Frank :coder:

backdraft 30. Aug 2006 07:53

Re: Picture2Bitmap
 
Zitat:

Zitat von Mavarik
Zitat:

Zitat von backdraft
Falls ich darauf zugreife, sagt er mir, dass das Bitmap ungültig ist.

Danke Oliver

Bist Du Dir sicher, dass es sich dabei um eine *.BMP handelt?

Es könnte eine JPEG Datei sein, oder über OLE werden META Daten übertragen...?!?

Frank :coder:

Ne es ist ja gerade keine BMP, deswegen frag ich ja, wie ich dahin komme. Das Quellformat ist MDI oder TIFF.
Über TGraphic kann ich drauf zugreifen.

backdraft 30. Aug 2006 13:00

Re: Picture2Bitmap
 
Zitat:

Zitat von backdraft
Hallo,

ich habe ein Bild mit
Delphi-Quellcode:
SetOlePicture(Image1.Picture, MODIMiDocView1.ImageSelection.ExportToPicture(0, 0));
in meine Eigenschaft Picture geladen.

Ich muss auf das Bild aber jetzt als Bitmap zugreifen.
Wie bekomme ich es jetzt hin, das ich in der Eigenschaft
Delphi-Quellcode:
Image1.Picutre.Bitmap
auch das Bild habe?
Falls ich darauf zugreife, sagt er mir, dass das Bitmap ungültig ist.

Danke Oliver


DGL-luke 30. Aug 2006 13:07

Re: Picture2Bitmap
 
ääähm...

Delphi-Quellcode:
function GetBitmap(pic: TPicture): TBitmap;
begin
  Result := TBitmap.Create;
  Result.Assign(pic{.Graphic});
end;
Ich glaube, das KÖNNTE funktionieren...

DGL-luke 29. Sep 2006 15:55

Re: Picture2Bitmap
 
möp... geht nicht...

Aber das:

Delphi-Quellcode:
procedure GetBitmap(const Graphic: TGraphic; out Bitmap: TBitmap);
begin
  if Bitmap = nil then
    Bitmap := TBitmap.Create;
  Bitmap.SetSize(Graphic.Width,Graphic.Height);
  Bitmap.Canvas.Draw(0,0,Graphic);
end;
Zumindest mit JPEG.

EDIT: tpicture->tgraphic

Khabarakh 29. Sep 2006 16:32

Re: Picture2Bitmap
 
Jupp. Mit einer ungefähren Wahrscheinlichkeit von 2,3 * 10^-10, weshalb es mich wundert, dass es bei dir funktioniert hat :stupid: .
Aber anstatt die fehlerhafte erste Zeile zu entfernen, warum nicht gleich eine Funktion benutzen? Den ersten Parameter könnte man noch zu TGraphic vereinfachen, aber das wäre nur noch ein wenig Kosmetik.

DGL-luke 29. Sep 2006 16:37

Re: Picture2Bitmap
 
ja wie jetzt? Geht es so oder nicht? Entweder es geht hundertprozentig oder gar nicht...

Khabarakh 29. Sep 2006 16:48

Re: Picture2Bitmap
 
Oder es geht nur, wenn der uninitialisierte Bitmap-Parameter zufällig nil beinhaltet. Wobei ich nicht beachtet habe, dass als Argument ein Feld übergeben werden könnte (das ja stets mit 0 initialisiert wird), aber eine immer funktionierende Funktion wäre trotzdem schöner ;) .

DGL-luke 30. Sep 2006 22:07

Re: Picture2Bitmap
 
Wenn der Anwender zu blöde ist, das Ding zu initialisieren, ist er selber schuld :roll:

Wenn ich das Bitmap als Rückgabeparameter nehme, gibts wieder Probleme mit Speicherlecks, weil der Anwender wiederum zu blöd ist, das Zeug freizugeben.

Also entweder - oder. Da es in Delphi leider keine saubere (= zuverlässige und elegante) Möglichkeit gibt, ein Objekt auf seine Existenz hin zu überprüfen bzw. ob hinter einem Pointer eine Instanz oder Speichermüll (der berüchtigte "wilde zeiger") steht (es lebe .Net/Java :mrgreen: ), hab ich keine Chance, das ganze wasserdicht zu machen.

Also was wäre deine "immer funktionierende Funktion" bitte?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:30 Uhr.
Seite 1 von 3  1 23      

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