![]() |
Handle von Image für Bmp im Speicher
Also eine Funktion aus einer DLL die ich verwende läd ein Bmp in den Speicher. Eine weitere arbeitet dies dann auf und kann es in einem Handle eines Objektes darstellen (laut Aussage Hersteller). Ich habe schon viele versucht aber keinen Erfolg gehabt. Mit Image.Canvas.Handle wurde das Image wenigstens weiß. Habe auch folgende Handles schon probiert Panel.handle, Form1.handle, Image.Picture.Bitmap.handle.
Meine Frage ist, vieleicht stand jemand ja auch schon vor dem Problem, gibt es weitere Handles im Image, die man testen kann? Oder sieht vieleicht jemand einen Fehler in meinem Vorgehen. Vielen Dank BAMatze Ps.: Vieleicht kennt einer eine Möglichkeit das Bild aus dem Speicher zu laden, Zeiger auf den Speicherplatz und Größe habe ich. |
Re: Handle von Image für Bmp im Speicher
Zitat:
Zitat:
Um was für eine DLL handelt es sich denn ? Welche Spezifikationen der DLL sind gegeben ? Mehr Informationen bitte. |
Re: Handle von Image für Bmp im Speicher
Also das mit dem Bitmap.Handle hab ich auch schon probiert. Leider noch mit eingeschränktem Erfolg, weiß wird sowohl Paintbox, als auch die Datei in die ich es speichere. Kannst du bitte mal schauen, ob ich da einen Fehler gemacht hab?
Delphi-Quellcode:
kurze Erklärung: die "iss_"-Funktionen kommen aus der DLL.
procedure TForm1.FormCreate(Sender: TObject);
var iIndex: integer; Tempbmp: TBitmap; begin Tempbmp := TBitmap.Create; Tempbmp.SetSize(2560,1920); iss_InitCamera(HHCAM,0); iss_LoadParameters(HHCAM,'Text.ini'); for iIndex := 0 to Bildzahl do begin iss_AllocImageMem(HHCAM, 2560, 1920, 24, Speicher[0].sSpeicherAdresse, Speicher[0].iSpeicherAdresse); Speicher[iIndex].iSpeicherNummer := iIndex; iss_AddtoSequence(HHCAM, Speicher[iIndex].sSpeicherAdresse, Speicher[iIndex].iSpeicherAdresse); end; iss_SetImageMem(HHCAM, Speicher[0].sSpeicherAdresse, Speicher[0].iSpeicherAdresse); iss_SetImageSize(HHCAM, 2560, 1920); iss_SetImagePos(HHCAM, 20,20); iss_SetColorMode(HHCAM, 1); iss_FreezeVideo(HHCAM,1); iss_RenderBitmap(HHCAM,Speicher[0].iSpeicherAdresse,Tempbmp.Handle,1); Tempbmp.SaveToFile('d:\Versuch1.bmp'); PaintBox1.Canvas.Draw(0,0,Tempbmp); Image1.Picture.Bitmap := Tempbmp; for iIndex := 0 to 0 do begin iss_SaveImageMem(HHCAM,PAnsiChar('d:\Versuch' + inttostr(iIndex)+ '.bmp'), Speicher[iIndex].sSpeicherAdresse, Speicher[iIndex].iSpeicherAdresse); end; end; Hier die Spezifikationen für die beiden Funktionen, in denen die Handles übergeben werden sollen:
Delphi-Quellcode:
und die 2.
4.73 is_RenderBitmap
Syntax INT is_RenderBitmap (HIDS hf, INT nMemID, HWND hwnd, INT nMode) Beschreibung Mit is_RenderBitmap() kann ein Bild aus einem Bildspeicher in einem angegebenen Fenster ausgegeben werden. Zur Darstellung werden Win32 Bitmapfunktionen verwendet. Die Darstellung erfolgt generell in dem Format, das beim Allokieren des Bildspeichers festgelegt wurde. In der Funktion is_AllocImageMem() legt der Parameter bitspixel die Farbtiefe und die Darstellungsart fest. Übergabeparameter hf Handle auf Kamera nMemID ID des Bildspeichers der angezeigt werden soll hwnd Fenster Handle des Ausgabefensters nMode Ausgabeformat
Delphi-Quellcode:
Was ich nicht verstehe, ich gebe den Proceduren doch schon alle möglichen Handles, warum hat bisher nicht eins ein Bild auf der Form erzeugt???
INT is_InitCamera (HIDS* phf, HWND hWnd)
Beschreibung is_InitCamera() öffnet den Treiber und stellt den Kontakt zur Hardware her. In dieser Funktion wird nach erfolgreicher Initialisierung das Handle auf die Kamera vergeben. Alle nachfolgenden Funktionen benötigen diesen Handle als ersten Parameter. Wenn kein DirectDraw zur Bildausgabe verwendet wird, kann hWnd=NULL übergeben werden. Übergabeparameter phf Zeiger auf den Handle der Kamera. Der Inhalt des Zeigers hat beim Aufruf der Funktion folgende Bedeutung: 0: verwende die erste freie Kamera 1-254: Öffne die Kamera mit dieser ID hWnd Handle auf das Fenster, in dem das Bild dargestellt werden soll (kann NULL sein) |
Re: Handle von Image für Bmp im Speicher
Aslo dfas Bild soll anscheinend auf ein Window-Handle gerendert (gezeichnet) werden. Möglicherweise Overlay ?
Das speichern über Paintbox, Bitmap usw. kann man vermutlich vergessen. Da es sich Anscheinend um uEye handelt solltest du mal im iNet via Google suchen. ![]() Hinweis: VCL-GR32-Bitmaps sind etwas anders als Windows-Bitmaps, werwende Windows-Bitmaps. |
Re: Handle von Image für Bmp im Speicher
Gibt es vieleicht eine Möglichkeit an das Bild über den Zeiger auf den Speicher und die Größe des Bildes zuzugreifen? Ich möchte nämlich verhindern, dass ich das Bild speichern muss (dies funktioniert wunderbar) um es dann hochzuladen und wieder zu löschen, wenn ich es nicht brauche. Glaube das wäre auch nicht so gut für die Festplatte. Problem dabei ist, ich weiß nicht, wie ich im Speicher nach meinem Bild suchen kann. Vieleicht hast du da nochmal einen Tip oder Link für mich.
Danke |
Re: Handle von Image für Bmp im Speicher
Hat niemand mal was ähnliches gemacht und kann mir einen Tipp geben?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz