Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi JPEG Datei in NonVCL Prog laden (https://www.delphipraxis.net/12077-jpeg-datei-nonvcl-prog-laden.html)

OLLI_T 20. Nov 2003 09:21


JPEG Datei in NonVCL Prog laden
 
Hallo und guten Morgen!

Ich suche für meine NonVCL Programme eine Möglichkeit, JPEG Bilder aus einer Datei laden zu können. Lässt sich das eventuell irgendwie mit Windows Bordmitteln bewerkstelligen? COM oder ne DLL, die ich anzapfen kann? Eine Delphi-Unit, die keine VCL Units nutzt, wäre auch genehm.
Brauche nix weiter als das Handle auf ne Bitmap. Speichern ist nicht nötig.

Vielen Dank schon mal und Gruss an alle

OLLI

Luckie 20. Nov 2003 09:37

Re: JPEG Datei in NonVCL Prog laden
 
Kuckst du hier: http://www.assarbad.org/stuff/ -> screenshotclass (untere Drittel). Zwar kein JPG aber dafür PNG, eventuell hilft das ja schon weiter.

OLLI_T 20. Nov 2003 09:58

Re: JPEG Datei in NonVCL Prog laden
 
Danke Luckie!


Das Material von Assa hab ich schon gesichtet. Leider kann ich damit nur PNG speichern aber nicht laden. :cry:

Tschau

Luckie 21. Nov 2003 19:34

Re: JPEG Datei in NonVCL Prog laden
 
Ich habe was. Ich habe was. :firejump: *juhu*
http://www.c-plusplus.de/forum/viewtopic.php?t=39384

OLLI_T 21. Nov 2003 20:11

Re: JPEG Datei in NonVCL Prog laden
 
Hey Luckie! :thuimb:

Das sieht toll und recht einfach aus, was Du da gesichtet hast. Ich geh jetzt in die Wanne und dann versuch ich den Spass mal nach Delphi zu übersetzen. Oder sitzt Du etwa schon dran?

Also vielen Dank und ich wünsch Dir ein extra schönes WE

Und ... keep on pumping! :wink:

OLLI

OLLI_T 21. Nov 2003 20:36

Re: JPEG Datei in NonVCL Prog laden
 
Hilfääääääää!

Jetzt hab ich den Code soweit fertig und es scheitert an ner Kleinigkeit. Hab Delphi 5 und bei mir ist die Interface-ID IID_IPicture noch nicht deklariert. Kann bitte bitte jemand in der Unit Active-X nachschauen und mir die Zeile posten! Das wäre total nett.

Vielen dank schon mal

OLLI

choose 21. Nov 2003 21:18

Re: JPEG Datei in NonVCL Prog laden
 
Hallo OLLI,

ich hoffe, dass ist, was du benötigst:
Delphi-Quellcode:
IID_IPicture: TGUID = '{000208A6-0001-0000-C000-000000000046}';

Luckie 21. Nov 2003 21:41

Re: JPEG Datei in NonVCL Prog laden
 
Zitat:

Zitat von OLLI_T
Das sieht toll und recht einfach aus, was Du da gesichtet hast. Ich geh jetzt in die Wanne und dann versuch ich den Spass mal nach Delphi zu übersetzen. Oder sitzt Du etwa schon dran?

nein, ich übersetzte sowas immer erst wenn ich es brauche. Aber ich hoffe du machst das OpenSource? :wink:
Zitat:

Also vielen Dank und ich wünsch Dir ein extra schönes WE
Ich dir auch, war aber nicht nötig.

OLLI_T 21. Nov 2003 22:10

Re: JPEG Datei in NonVCL Prog laden
 
HY Choose!

Mit Deinem Wert klappt es nicht. Habe im Netz der Netz diese Lottozahlen gefunden:

Delphi-Quellcode:
  IID_IPicture : TGUID = '{7BF80980-BF32-101A-8BBB-00AA00300CAB}';
Und was soll ich sagen ... ICH KANN JPEG´s LADEN!!!! Läuft wie geschmiert. Hier die offenen Delphi-Sossen:

Delphi-Quellcode:
Var
  pPicture:IPicture;

Function LoadPicture(AFile: String):Boolean;
Var
  hFile,hMem:THandle;
  dwFileSize,dwBytesRead:DWord;
  pData:Pointer;
  bRead:Boolean;
  hRes:HResult;
  pStream:IStream;
Begin
  // open file
  Result:=FALSE;

  hFile:=CreateFile(PChar(AFile),GENERIC_READ,0,NIL,OPEN_EXISTING,0,0);
  if (hFile = INVALID_HANDLE_VALUE) Then Exit;

  // get file size
  dwFileSize:=GetFileSize(hFile,NIL);
  If (dwFileSize = -1) Then Exit;

  // get memory objekt
  hMem:=GlobalAlloc(GMEM_MOVEABLE Or GMEM_NODISCARD, dwFileSize);
  If(hMem = 0) Then Exit;

  pData := GlobalLock(hMem);
  If (pData = NIL) Then Exit;

  bRead:=ReadFile(hFile, pData^ , dwFileSize, dwBytesRead, NIL);
  CloseHandle(hFile);
  GlobalUnlock(hMem);
  If Not(bRead) Then Exit;

  // create IStream from global memory
  pStream:=NIL;
  hRes:=CreateStreamOnHGlobal(hMem, TRUE, pStream);

  If FAILED(hRes) Or (pStream = NIL) Then exit;

  // Create IPicture from image file
  hRes := OleLoadPicture(pStream, dwFileSize, FALSE, IID_IPicture, pPicture);
  If (hRes=S_OK) And (pPicture <> NIL) Then Result:=TRUE;

  pStream := NIL;
End;
Gute N8 und noch mal DANKE an Luckie

OLLI

Luckie 21. Nov 2003 22:22

Re: JPEG Datei in NonVCL Prog laden
 
Schön. Und wo wird es hingeladen? Wie kann man es jetzt darstellen? Schön wäre es, wenn ich ein HBITMAP rausbekäme, welches ich dann in ein Static oder so anzeigen könnte.

Und die vielen Exits gefallen mir nicht. Ich mache da über das WE mal etwas.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:41 Uhr.
Seite 1 von 2  1 2      

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