Introduzione
In questo articolo vedremo una tecnica di come scaricare una foto da internet, la tecnica utilizzata è particolare perché non scaricheremo l’immagine da un qualsiasi sito, ma l’immagine giornaliera che il motore di ricerca Bing offre ogni giorno ai suoi utenti.
Tramite il linguaggio di programmazione VB.Net e C# vedremo come fare il download sul nostro pc, della foto che comparare come sfondo nel sito www.bing.it
Progettazione form
Si crea un nuovo progetto di tipo “Windows Application” utilizzando il linguaggio di programmazione di nostro interesse.
Dopo aver creato il progetto, aggiungiamo nella form, una casella di testo, che sarà impostata in modalità di sola lettura la quale visualizza il percorso e nome del file, due pulsanti, uno per aprire la finestra di salvataggio immagine e l’altro per il download ed un controllo label, il tutto come mostrato in figura 1.
Figura 1 - i controlli posizionati nella form
Posizioniamo i controlli come riportati nella figura precedente.
Aggiungiamo anche un controllo di tipo “SaveFileDialog”.
Stesura del codice
Facciamo doppio click sul pulsante contraddistinto con i tre puntini, quello vicino alla casella di testo.
L’evento click di tale pulsante visualizza la finestra di dialogo per il salvataggio del file, permettendo di impostare il percorso e nome del file di tipo “Jpg”.
Qui di seguito si riporta il frammento di codice per il linguaggio VB.Net e C#
VB.Net
Private
Sub BtnPercorso_Click(sender As System.Object,
e As System.EventArgs)
Handles BtnPercorso.Click
If saveFileDialog1.ShowDialog()
= Windows.Forms.DialogResult.OK Then
txtPercorso.Text =
saveFileDialog1.FileName + ".jpg"
End If
End Sub
C#
private
void BtnPercorso_Click(object
sender, EventArgs e)
{
if
(saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
txtPercorso.Text = saveFileDialog1.FileName + ".jpg";
}
}
Ora facciamo click sul pulsante con la scritta “Download”, nell’evento click scriveremo il codice per effettuare il download dell’immagine.
Prima di eseguire il download dell’immagine, dobbiamo calcolare il percorso e nome del file che ogni giorno bing metterà on line.
L’algoritmo è molto semplice, l’immagine di sfondo, si trova nel tag “/az/hprichbg/rb/ “
Ed una volta ottenuto tale valore, dobbiamo rilevare il testo che segue fino al simbolo del singolo apice “ ‘ “ .
Il valore 16 è la somma del tag html riguardante il percorso dell’immagine, ossia “/az/hprichbg/rb/” .
Dopo aver ottenuto il percorso e nome dell’immagine del giorno non ci resta che effettuare il download dell’immagine, tramite le classi httpwebrequest, httpwebreesponse e stream.
Qui di seguito si riporta il frammento di codice.
VB.Net
(Evento click)
Private
Sub btnDownload_Click(sender As System.Object,
e As System.EventArgs)
Handles btnDownload.Click
Using
client As New WebClient()
Dim
htmlCode As String
= client.DownloadString("http://www.bing.com/?cc=it")
Dim
indice As Int32
= htmlCode.IndexOf("/az/hprichbg/rb/")
indice += 16
Dim
indice2 As Int32
= htmlCode.IndexOf("'", indice)
Dim
testoDaCercare As String
= htmlCode.Substring(indice, indice2 - indice)
DownloadImage("http://www.bing.com/az/hprichbg/rb/" +
testoDaCercare)
End Using
End Sub
C# (Evento
click)
private
void btnDownload_Click(object
sender, EventArgs e)
{
using
(WebClient client = new
WebClient())
{
string
htmlCode = client.DownloadString("http://www.bing.com/?cc=it");
Int32
indice = htmlCode.IndexOf(@"/az/hprichbg/rb/");
indice += 16;
Int32
indice2 = htmlCode.IndexOf("'",
indice);
string
testodaCercare = htmlCode.Substring(indice, indice2 - indice);
DownloadImage("http://www.bing.com/az/hprichbg/rb/" +
testodaCercare);
return;
}
}
VB.Net
(Funzione DownloadImage)
Sub
DownloadImage(url As String)
If txtPercorso.Text.Trim() = ""
Then
MessageBox.Show("Selezionare
un percorso e nome di file.")
Exit Sub
End If
Dim
httpWebRequest As HttpWebRequest
= httpWebRequest.Create(url)
Using
httpwebresponse As HttpWebResponse
= httpWebRequest.GetResponse()
Using
Stream As Stream
= httpwebresponse.GetResponseStream()
Dim
immagine As New
Bitmap(Image.FromStream(Stream))
immagine.Save(txtPercorso.Text)
MessageBox.Show("Download completato. Verifica in " +
txtPercorso.Text + " il file immagine.")
End Using
End Using
End Sub
C#
(Funzione DownloadImage)
private void DownloadImage(string
url)
{
if (txtPercorso.Text.Trim() == "")
{
MessageBox.Show("Selezionare un percorso e nome di file.");
return;
}
HttpWebRequest
httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
using
(HttpWebResponse httpWebReponse = (HttpWebResponse)httpWebRequest.GetResponse())
{
using
(Stream stream = httpWebReponse.GetResponseStream())
{
Bitmap
immagine = new Bitmap(Image.FromStream(stream));
immagine.Save(txtPercorso.Text);
MessageBox.Show("Download completato. Verifica in " +
txtPercorso.Text +" il file
immagine.");
}
}
}
Come si è visto dal precedente esempio di codice, tramite la classe webclient si ottiene il codice html della pagina, con il metodo downloadstring.
La funzione “DownloadImagine” con l’utilizzo delle classi “httpwebrequest”, “httpwebresponse”, “Stream” e “bitmap” permette di salvare l’immagine sul nostro pc.
Conclusioni
L’articolo ha illustrato la possibilità di realizzare un simpatico programma che ci permette di gestire le belle immagini che il motore di ricerca Bing offre ogni giorno ai suoi utenti.
L’articolo ha voluto avvicinare il lettore al download dei file di tipo immagine, il programma può essere ampliato rendendo ancora più interessante l’articolo.
Va fatta una precisione, che le immagini, non si possono utilizzare liberamente, questo vuol dire, che se vogliamo metterle nei nostri siti o programmi, o per altra iniziativa (campagne marketing, comunicazione, etc) ciò non è possiibile
Tramite la parola Download è possibile scaricare il file di esempio.
Nessun commento:
Posta un commento