Differenze tra le versioni di "Scaricare una immagine da un sito internet"

Da Gambas-it.org - Wikipedia.
Riga 12: Riga 12:
  
 
==Procedura diretta==
 
==Procedura diretta==
L'esempio |[[#Note|1]]| prevede il posizionamento sul Form di una <i>PictureBox</i>, di un <i>Button</i> e di una <i>Label</i>, nonché l'impostazione anche dei componenti: <i>gb.net</i> e <i>gb.net.curl</i>:
+
L'esempio prevede il posizionamento sul Form di una <i>PictureBox</i> e di un <i>Button</i>, nonché l'attivazione dei componenti: <i>gb.net</i> e <i>gb.net.curl</i>:
  '''Private''' myhttp As New HttpClient As "myhttp"   
+
  Private myhttp As New HttpClient As "myhttp"   
  '''Private''' stringa As String
+
  Private stringa As String
 
   
 
   
 
   
 
   
 
  '''Public''' Sub Button1_Click()
 
  '''Public''' Sub Button1_Click()
 
   
 
   
  <font color="#006400">' <i>invia_richiesta al server per scaricare il file immagine:</i></font>  |[[#Note|2]]|
+
  <font color=gray>' <i>Invia_richiesta al server per scaricare il file immagine:</i></font>  [<SUP>[[#Note|nota 1]]</sup>]
 +
  myhttp.URL = "<font color=gray>''www.indirizzo.del.file.immagine.da.scaricare''</font>"
 +
 
 +
  myhttp.Timeout = 15
 +
 
 +
<FONT Color=gray>' ''Scarica i dati del file immagine in un percorso prescelto, contenente anche il nome del file immagine ricreato:</font>
 +
  myhttp.Get(Null, "<font color=gray>''/percorso/del/file/immagine/caricato/e/ricreato''</font>")
 +
     
 +
<b>End</b> 
 +
 
 +
 +
<b>Public</b> Sub MyHTTP_Finished() 
 +
   
 +
  MyHTTP.Close 
 +
             
 +
 +
<font color=gray>' <i>Ricreiamo il file:</i></font> [<SUP>[[#Note|nota 2]]</sup>]
 +
  File.Save("<font color=gray>''/percorso/del/file/immagine/ricreato''</font>", stringa)
 +
 +
 +
<font color=gray>' <i>Carichiamo nella "PictureBox" il file immagine ricreato:</i></font>
 +
  PictureBox1.Picture = Picture["''/percorso/del/file/immagine/ricreato''"]
 +
 +
<b>End</b>
 +
 
 +
 
 +
oppure anche utilizzando l'evento ''_Read()'':
 +
Private myhttp As New HttpClient As "myhttp" 
 +
Private stringa As String
 +
 +
 +
'''Public''' Sub Button1_Click()
 +
 +
<font color=gray>' <i>Invia_richiesta al server per scaricare il file immagine:</i></font>  [<SUP>[[#Note|nota 1]]</sup>]
 
   myhttp.URL = "''www.indirizzo.del.file.immagine.da.scaricare''"
 
   myhttp.URL = "''www.indirizzo.del.file.immagine.da.scaricare''"
 
    
 
    
Riga 32: Riga 65:
 
   Dim sBuf As String   
 
   Dim sBuf As String   
 
      
 
      
  <font color="#006400">' <i>Andiamo a leggere il flusso di dati del file immagine:</i></font>
+
  <font color=gray>' <i>Andiamo a leggere il flusso di dati del file immagine:</i></font>
 
     If Lof(MyHTTP) Then   
 
     If Lof(MyHTTP) Then   
 
       Read #MyHTTP, sBuf, Lof(MyHTTP)
 
       Read #MyHTTP, sBuf, Lof(MyHTTP)
Riga 51: Riga 84:
 
                
 
                
 
   
 
   
  <font color="#006400">' <i>Ricreiamo il file:</i></font> |[[#Note|3]]|
+
  <font color=gray>' <i>Ricreiamo il file:</i></font> [<SUP>[[#Note|nota 2]]</sup>]
 
   File.Save("''/percorso/del/file/ricreato''", stringa)
 
   File.Save("''/percorso/del/file/ricreato''", stringa)
 
   
 
   
 
   
 
   
  <font color="#006400">' <i>Carichiamo nella "PictureBox" il file immagine ricreato:</i></font>
+
  <font color=gray>' <i>Carichiamo nella "PictureBox" il file immagine ricreato:</i></font>
 
   PictureBox1.Picture = Picture["''/percorso/del/file/ricreato''"]
 
   PictureBox1.Picture = Picture["''/percorso/del/file/ricreato''"]
 
   
 
   
 
  <b>End</b>
 
  <b>End</b>
 +
  
  
Riga 80: Riga 114:
 
   
 
   
 
  '''End'''
 
  '''End'''
In questo caso, però, l'immagine sarà aperta e mostrata nel proprio web-browser, e pertanto la procedura anche qui sarà ''indiretta''.  |[[#Note|4]]|
+
In questo caso, però, l'immagine sarà aperta e mostrata nel proprio web-browser, e pertanto la procedura anche qui sarà ''indiretta''.  [<SUP>[[#Note|nota 3]]</sup>]
  
 
b) da un oggetto specifico, che supporta il codice html, come la [[Controlli_e_finestre_che_supportano_il_codice_HTML#L.27oggetto_WebView|<I>WebView</i>]]. In tal caso è necessario attivare, come si sa, anche il componente <i>gb.qt4.webkit:</i>
 
b) da un oggetto specifico, che supporta il codice html, come la [[Controlli_e_finestre_che_supportano_il_codice_HTML#L.27oggetto_WebView|<I>WebView</i>]]. In tal caso è necessario attivare, come si sa, anche il componente <i>gb.qt4.webkit:</i>
Riga 104: Riga 138:
 
  '''Public''' Sub Button1_Click()
 
  '''Public''' Sub Button1_Click()
 
   
 
   
  <font color="#006400">' <i>Scarichiamo l'immagine dal sito web:</i></font>
+
  <font color=gray>' <i>Scarichiamo l'immagine dal sito web:</i></font>
   Shell "wget http:/&#47;indirizzo_web_dell'_immagine_da_scaricare --directory-prefix percorso_ove_sarà_scaricata" Wait |[[#Note|5]]|
+
   Shell "wget http:/&#47;indirizzo_web_dell'_immagine_da_scaricare --directory-prefix percorso_ove_sarà_scaricata" Wait [<SUP>[[#Note|nota 4]]</sup>]
 
   
 
   
  <font color="#006400">' <i>Carichiamo l'immagine nella PictureBox:</i></font>
+
  <font color=gray>' <i>Carichiamo l'immagine nella PictureBox:</i></font>
 
   PictureBox1.Picture = Picture["percorso_ove_l'immagine_è_stata_scaricata"]
 
   PictureBox1.Picture = Picture["percorso_ove_l'immagine_è_stata_scaricata"]
 
   
 
   
Riga 115: Riga 149:
  
 
=Note=
 
=Note=
[1] L'esempio è tratto con alcune modifiche da altro esempio realizzato dall'utente <i>fsurfing</i> del Forum <i>Gambas-it.org</i>.
+
[1] In vero, con questa metodo è possibile scaricare qualsiasi tipo di file.
 
 
[2] In vero, con questa metodo è possibile scaricare qualsiasi tipo di file.
 
  
[3] E' possibile ricreare <i>utilmente</i> con questo metodo qualsiasi tipo di file.
+
[2] E' possibile ricreare <i>utilmente</i> con questo metodo qualsiasi tipo di file.
  
[4] In questo caso sarà possibile soltanto <i>utilizzare</i> il file (dunque trattandosi di file immagine, <span style="text-decoration:underline">visualizzarla</span>), al quale ci si è collegati via internet, e non sarà possibile direttamente ottenerne una copia indipendente da salvare.
+
[3] In questo caso sarà possibile soltanto <i>utilizzare</i> il file (dunque trattandosi di file immagine, <span style="text-decoration:underline">visualizzarla</span>), al quale ci si è collegati via internet, e non sarà possibile direttamente ottenerne una copia indipendente da salvare.
  
[5] Se si vuole inserire l'immagine in una nuova cartella da creare, questa deve essere aggiunta alla fine del pecorso ove si intende scaricare il file:
+
[4] Se si vuole inserire l'immagine in una nuova cartella da creare, questa deve essere aggiunta alla fine del pecorso ove si intende scaricare il file:
  --directory-prefix /percorso/nuova_cartella
+
  --directory-prefix <font color=gray>''/percorso/nuova_cartella''</font>

Versione delle 09:18, 5 apr 2016

Di seguito vedremo tre possibilità per scaricare dal WEB file immagini:

- la prima utilizza le sole funzioni e risorse di Gambas;

- la seconda utilizza anche il codice html;

- la terza utilizza il comando Shell ed il programma wget.


Usando le sole risorse e funzioni di Gambas

Le risorse di Gambas offrono due possibilità:

Procedura diretta

L'esempio prevede il posizionamento sul Form di una PictureBox e di un Button, nonché l'attivazione dei componenti: gb.net e gb.net.curl:

Private myhttp As New HttpClient As "myhttp"  
Private stringa As String


Public Sub Button1_Click()

' Invia_richiesta al server per scaricare il file immagine:   [nota 1]
 myhttp.URL = "www.indirizzo.del.file.immagine.da.scaricare"
  
 myhttp.Timeout = 15
 
' Scarica i dati del file immagine in un percorso prescelto, contenente anche il nome del file immagine ricreato:
 myhttp.Get(Null, "/percorso/del/file/immagine/caricato/e/ricreato") 
     
End  
 

Public Sub MyHTTP_Finished()  
    
  MyHTTP.Close  
             

' Ricreiamo il file: [nota 2]
  File.Save("/percorso/del/file/immagine/ricreato", stringa)


' Carichiamo nella "PictureBox" il file immagine ricreato:
  PictureBox1.Picture = Picture["/percorso/del/file/immagine/ricreato"]

End


oppure anche utilizzando l'evento _Read():

Private myhttp As New HttpClient As "myhttp"  
Private stringa As String


Public Sub Button1_Click()

' Invia_richiesta al server per scaricare il file immagine:   [nota 1]
 myhttp.URL = "www.indirizzo.del.file.immagine.da.scaricare"
  
 myhttp.Timeout = 15  
 myhttp.Get() 
     
End  
  

Public Sub myhttp_Read()  
     
 Dim sBuf As String  
    
' Andiamo a leggere il flusso di dati del file immagine:
   If Lof(MyHTTP) Then   
     Read #MyHTTP, sBuf, Lof(MyHTTP)
     stringa = stringa & sBuf
   End If

End


Public Sub MyHTTP_Finished()  
    
  Label1.Text = ("Immagine scaricata !")  
       
  Wait   
        

  MyHTTP.Close  
             

' Ricreiamo il file: [nota 2]
  File.Save("/percorso/del/file/ricreato", stringa)


' Carichiamo nella "PictureBox" il file immagine ricreato:
  PictureBox1.Picture = Picture["/percorso/del/file/ricreato"]

End


Procedura indiretta

Questa procedura (è necessario attivare il componente gb.desktop) prevede l'utilizzo del solo codice Gambas, ma prevede che il file immagine sia aperto dal programma preimpostato nel nostro sistema per l'apertura, appunto, dei file immagine:

Public Sub Button1_Click()

  Desktop.Open("www.indirizzo.del.file.immagine.da.scaricare")

End


Utilizzo del codice HTML

Si potrà effettuare il collegamento ad un file immagine richiamandolo:

a) da un'oggetto che permette l'utilizzo del codice html:

Public Sub Button1_Click()

  Message.Info("<A HREF=\"http://indirizzo_web_dell'_immagine_da_mostrare\">Clicca qui per vedere l'immagine</a>")

End

In questo caso, però, l'immagine sarà aperta e mostrata nel proprio web-browser, e pertanto la procedura anche qui sarà indiretta. [nota 3]

b) da un oggetto specifico, che supporta il codice html, come la WebView. In tal caso è necessario attivare, come si sa, anche il componente gb.qt4.webkit:

Public Sub Form_Open()  

  WebView1.Html = "<HTML><A HREF='http://www.indirizzo_web_immagine'>Collegamento ipertestuale con l'immagine da mostrare.</a></html>"  

End

Nella WebView verrà mostrato il testo, sul quale si dovrà cliccare per far apparire l'immagine.


Se si vuole far apparire l'immagine direttamente, senza dover cliccare su un ipertesto, allora il codice sarà il seguente:

Public Sub Form_Open()  

  WebView1.Html = "<HTML><IMG SRC='http://www.indirizzo_web_immagine'>Eventuale testo</img></html>"  

End


Usando Shell ed il comando wget

Nell'esempio che segue sul Form del programma saranno posti semplicemente una PictureBox ed un Button. Scaricheremo un'immagine da un sito internet mediante wget (che sarà lanciato nel nostro programma mediante il comando Shell), e successivamente la caricheremo nella PictureBox:

Public Sub Button1_Click()

' Scarichiamo l'immagine dal sito web:
  Shell "wget http://indirizzo_web_dell'_immagine_da_scaricare --directory-prefix percorso_ove_sarà_scaricata" Wait [nota 4]

' Carichiamo l'immagine nella PictureBox:
  PictureBox1.Picture = Picture["percorso_ove_l'immagine_è_stata_scaricata"]

End


Note

[1] In vero, con questa metodo è possibile scaricare qualsiasi tipo di file.

[2] E' possibile ricreare utilmente con questo metodo qualsiasi tipo di file.

[3] In questo caso sarà possibile soltanto utilizzare il file (dunque trattandosi di file immagine, visualizzarla), al quale ci si è collegati via internet, e non sarà possibile direttamente ottenerne una copia indipendente da salvare.

[4] Se si vuole inserire l'immagine in una nuova cartella da creare, questa deve essere aggiunta alla fine del pecorso ove si intende scaricare il file:

--directory-prefix /percorso/nuova_cartella