Realizzare una Thumbnail per realizzare una raccolta foto in vb 2008 ...

martedì 24 novembre 2009 - 14.56

basicdany Profilo | Expert

salve a tutti, ho visto un po su internet, per realizzare una gallery di immagini si utilizza questa tecnica "Thumbnail", a me serve avere un'anteprima delle foto inserite in piccolo, cliccando sopra deve ingrandirle, qualcuno puoi postarmi qualche guida o sorgente su come realizzare questo in vb 2008 con un db sql server 2005?

grazie a tutti

freeteo Profilo | Guru

Ciao,
hai già visto questo post?
http://www.dotnethell.it/forum/messages.aspx?ThreadID=28436
si appoggia ad un Handler che ti fa la Thumb al volo...ma questo se sei dentro ad un'applicazione web.

Forse tu sei dentro ad un'applicazione Win32, quindi ti può tornare utile questo:
http://www.dotnethell.it/forum/messages.aspx?ThreadID=32056
il quale fa l'immagine dal file su disco (nel tuo caso magari sono i byte del campo del db, oppure nel db hai il path) e poi aggiunge tante picture ad un pannello...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

basicdany Profilo | Expert

ciao, grazie tanto ok per il progettino funziona, mi servirebbe pero' ricavare il percorso quando faccio il click sull'imaggine piccola, in modo da ingrandirla!

come posso fare?

freeteo Profilo | Guru

Ciao,
presumo tu sia in ambiente Win32, quindi hai usato il secondo esempio che ti ho segnalato.
Ti basta aggiungere la sottoscrizione all'evento quando aggiungi l'immagine, e magari nel Tag dell'immagine mettere il path, per poi ricavartelo quando viene scatenato l'evento (e quindi eseguito il codice del metodo "agganciato" diciamo).
Che tradotto in codice diventa:
.... PictureBox p = new PictureBox(); .... p.Tag = file; p.Click += new EventHandler(p_Click); pannello.Controls.Add(p); } void p_Click(object sender, EventArgs e) { string path = Convert.ToString((sender as PictureBox).Tag); Process.Start(path); }
dove Process è di "System.Diagnostic" e fa le veci dello ShellExecute classico per aprire il file...

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

basicdany Profilo | Expert

ciao ho pravato il codice di sopra per far si possa cliccare sull'immagine e ingrandire ma non funziona non riconosce il metodo click che si vuole crare:
p.Click += new EventHandler(p_Click);

Sono su win32 utilizzo visual studio 2008 e come db sql server 2005 avresti gentilmente qualche esempio da postarmi, o se mi spieghi come reallizzare queste 2 cose:

-Come di chiedevo prima una tecnica mi permette di ingrandire le immagini quandi faccio click sulla foto interessata
-sotto alla foto in minituare il nome della foto completo di percorso complreto
-di far scorrere un elenco di immagini in sequenza.

in questo modo grazie a te ho tutto per realizzare una gallery di immagini



grazie tanto aspetto risposta

basicdany Profilo | Expert

Ciao,nessuno puoi aiutarmi?

grazie

freeteo Profilo | Guru

>ciao ho pravato il codice di sopra per far si possa cliccare
>sull'immagine e ingrandire ma non funziona non riconosce il metodo
>click che si vuole crare:
> p.Click += new EventHandler(p_Click);
come non riconosce il metodo? è un evento al quale associ sempre lo stesso handler che punta alla funzione "p_Click" ...che errore ti da?
Ricorda che il codice è C# in vb.net è leggermente diverso, ma il concetto è uguale...



>-Come di chiedevo prima una tecnica mi permette di ingrandire
>le immagini quandi faccio click sulla foto interessata
io ti ho proposto di fare una shellexecute del file, ma puoi anche aprire una form che visualizzi quella immagine in maniera più grande


>-sotto alla foto in minituare il nome della foto completo di
>percorso complreto
quando aggiungi la Picture, aggiungi anche una label con il testo che vuoi e la metti sotto (o posizione, o tramite Dock)


>-di far scorrere un elenco di immagini in sequenza.
per fare questo puoi appoggiarti ad un time e cambiare l'immagine, magari chiamando la form che ti suggerivo prima passando via via un percorso diverso...



Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

basicdany Profilo | Expert

>ciao ho pravato il codice di sopra per far si possa cliccare
>sull'immagine e ingrandire ma non funziona non riconosce il metodo
>click che si vuole crare:
> p.Click += new EventHandler(p_Click);
come non riconosce il metodo? è un evento al quale associ sempre lo stesso handler che punta alla funzione "p_Click" ...che errore ti da?
Ricorda che il codice è C# in vb.net è leggermente diverso, ma il concetto è uguale...

LO TRADOTTO IN VB MA NON ESISTE IL METODO "CLICLK" SE PERFAVORE MI PUOI DIRE COME FARE



>-Come di chiedevo prima una tecnica mi permette di ingrandire
>le immagini quandi faccio click sulla foto interessata
io ti ho proposto di fare una shellexecute del file, ma puoi anche aprire una form che visualizzi quella immagine in maniera più grande


>-sotto alla foto in minituare il nome della foto completo di
>percorso complreto
quando aggiungi la Picture, aggiungi anche una label con il testo che vuoi e la metti sotto (o posizione, o tramite Dock)

CHE ISTRUZIONE INSERISCO PER PER INSERIRLO.


GRAZIE CIAO

freeteo Profilo | Guru

Ciao,
ti ho allegato un progetto vb.net che si avvicina molto a quello che vuoi fare tu, perfezionalo ma fa esattamente quanto detto finora, ossia aggiungo con un ciclo un'immagine.
Nel tuo caso però vuoi anche una label, e per semplicità ho fatto uno UserControl che abbia immagine+label e che si gestisce da solo l'evento Click.

Dovresti riuscire tranquillamente.

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo

basicdany Profilo | Expert

ciao, grazie a voi ho realizzato un bel sistema di caricamento immagini in anteprima e poi l'ingrandimento cliccando sopra, tutto ok
per ora mi domando???,
inserendo una 50 immagini nel db il database è gia diventato 100 mb, le immagini sono ad altissima risoluzione 2 mb per immagini

0-mi conviene salvare il percorso a questo punto invece della foto nel db???
1- l'applicazione funzionera in rete anche potrei avere problemi di lentezza nel caricare le foto
2-il db diventerebbe troppo grande dando problemi, esempio 500mb??

ciao grazie

freeteo Profilo | Guru

>ciao, grazie a voi ho realizzato un bel sistema di caricamento
>immagini in anteprima e poi l'ingrandimento cliccando sopra,
>tutto ok
ottimo, accetta la risposta così chiudiamo il thread


>per ora mi domando???,
>inserendo una 50 immagini nel db il database è gia diventato
>100 mb, le immagini sono ad altissima risoluzione 2 mb per immagini
ma le salvi nel database??? scelta che io sconsiglio vivamente per evitare appunto questi problemi, oltre a quelli di manutenzione delle cose.
La cosa migliore a mio avviso, è salvare sempre un path dell'immagine (anche relativo, o al massimo anche solamente il nome del file, per poi andare tramite codice a costruire il path corretto al file) e poi nel prrogetto accedere all'immagine come file presente su disco.
In questo modo se devi fare qualche manutenzione (ad esempio un resize delle immagini, o una compressione) lo fai tramite esplora risorse, quindi slegato da quello che è l'applicativo e soprattutto il db.


>0-mi conviene salvare il percorso a questo punto invece della
>foto nel db???
assolutamente si


>1- l'applicazione funzionera in rete anche potrei avere problemi
>di lentezza nel caricare le foto
in che senso? non cambia niente, tanto i byte che passano per leggere la foto sono gli stessi, lavora invece sulla compressione Jpeg se vuoi guadagnare in tempo


>2-il db diventerebbe troppo grande dando problemi, esempio 500mb??
si e poi altro ancora che ti ho citato sopra


>ciao grazie
di nulla, figurati siamo qui per questo.

Ciao.

Matteo Raumer
[MCAD .net, MVP Visual C#]
http://blogs.dotnethell.it/freeteo
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5