Seite 1 von 2

Bild aus dem Internet laden

Verfasst: 30.10.2008 17:36
von Dare Devil
Hab in der Suche leider nix brauchbares gefunden, also deswegen frage ich mal hier ...

ich wuerde gern ein Bild aus dem Internet laden (als ImageGadget), ohne dass man es auf der Festplatte speichern muss. Geht das?

Code: Alles auswählen

LoadImage(0, "http://www.eineseite.com/bild.bmp")
klappt jedenfalls nicht :mrgreen:

Verfasst: 30.10.2008 17:44
von RSBasic

Code: Alles auswählen

ReceiveHTTPFile("http://www.eineseite.com/bild.bmp","bild.bmp")
>ohne dass man es auf der Festplatte speichern muss

Code: Alles auswählen

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If CreateGadgetList(WindowID(0))
    WebGadget(1,10,10,350,150,"http://www.google.de/intl/de_de/images/logo.gif",0)
  EndIf
  
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf

Verfasst: 30.10.2008 17:50
von Kaeru Gaman
oder mal die MSDN fragen nach
URLDownload_(
URLDownloadToCacheFile_(

abr vorrsicht:
so ein API-Zugriff wird von den meisten Virenscännern angemeckert,
wenn dein Proggi kein Zertifikat mit sich rumträgt.

Verfasst: 30.10.2008 17:54
von ts-soft
Vielleicht mal ins CodeArchiv schauen :wink:

Code: Alles auswählen

; German forum: http://www.purebasic.fr/german/archive/viewtopic.php?t=2808&highlight=
; Author: dige (updated for PB4.00 by blbltheworm)
; Date: 12. November 2003
; OS: Windows
; Demo: No

Procedure.l DownloadToMem ( URL.s, *lpRam, ramsize.l ) 
  Protected agent.s, hInet.l, hData.l, Bytes.l 
  
  ;  #INTERNET_OPEN_TYPE_DIRECT    = 1 
  ;  #INTERNET_DEFAULT_HTTP_PORT   = 80 
  ;  #INTERNET_SERVICE_HTTP        = 3 
  ;  #INTERNET_FLAG_NO_CACHE_WRITE = $4000000 
  ;  #INTERNET_FLAG_RELOAD         = $8000000 

  agent.s = "Mozilla/4.0 (compatible; ST)" 
  hInet.l = InternetOpen_ ( @agent.s,0,0,0,0 ) 
  hData.l = InternetOpenUrl_ ( hInet, @URL.s, "", 0, $8000000, 0 ) 
  
  If hData > 0 : InternetReadFile_ ( hData, *lpRam, ramsize.l, @Bytes.l ) : Else : Bytes = -1 : EndIf 
  
  InternetCloseHandle_ (hInet) 
  InternetCloseHandle_ (hFile) 
  InternetCloseHandle_ (hData) 
  
  ProcedureReturn Bytes.l 
EndProcedure 

; Bsp: 
UseJPEGImageDecoder() 
mem.s = Space(63000) 
;CallDebugger
If DownloadToMem ( "http://www.purearea.net/pb/pics/purearea4.jpg", @mem, 63000 ) 
  If CatchImage(0, @mem) 
    hWnd = OpenWindow(0, 0, 0, ImageWidth(0), ImageHeight(0), "PB-Logo" , #PB_Window_ScreenCentered | #PB_Window_SystemMenu) 
    CreateGadgetList( hWnd ) 
    ImageGadget(0, 0, 0, WindowWidth(0), WindowHeight(0), ImageID(0)) 
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow 
  EndIf 
EndIf 
Macht nämlich genau was Du möchtest

Verfasst: 30.10.2008 17:58
von Dare Devil
@RSBasic
Der erste Befehl geht nicht - ist auch nicht in der Hilfe vorhanden ...
Die Idee mit dem WebGadget ist zwar gut (und simple), aber leider fuegtg es noch die seitliche Scrollleiste mit ein... kann man die irgendwie rausnehmen?

@Kaeru Gaman
Naja dein Virenscanner hat sogar bei einer Datei gemeckert, die weder Internetverbindung aufgebaut hat, noch irgendwelche Dateien ausgelesen oder geschrieben hat :mrgreen:
Spass beiseite, kann man so ein Virenscannergemecker verhindern? Hab ausserdem noch nie mit der API gearbeitet ... muss mich dann wohl erstmal umguckn wie das geht /:->

Verfasst: 30.10.2008 18:04
von Dare Devil
@ts-soft
ja funktioniert :D

danke fuer eure Hilfe :allright:

Verfasst: 30.10.2008 18:06
von NicTheQuick
Dare Devil hat geschrieben:@RSBasic
Der erste Befehl geht nicht - ist auch nicht in der Hilfe vorhanden ...
Du sagst uns ja auch nicht, welche PB-Version du nutzt.

Verfasst: 30.10.2008 18:07
von rolaf
NicTheQuick hat geschrieben:
Dare Devil hat geschrieben:@RSBasic
Der erste Befehl geht nicht - ist auch nicht in der Hilfe vorhanden ...
Du sagst uns ja auch nicht, welche PB-Version du nutzt.
Augen auf? :mrgreen:
Oder noch verklebt von der letzten Studi-Party?
Signatur-Button übersehen?

Verfasst: 30.10.2008 18:19
von Kaeru Gaman
das is aber in der 4.2 drin...

Verfasst: 30.10.2008 18:24
von ts-soft
Da fehlt auf jedem Fall das InitNetwork(), weil so funzt das nicht :mrgreen: