Newsgroup: it.comp.lang.visual-basic
Titolo: [?] [COM] Resizer di immagini

Alla disperata ricerca di un componente che permetta, in una pagina ASP, di
generare delle miniature da immagini grandi, ho trovato una serie di
possibilità, tutte buone, ma tutte anche troppo care per il mio budget.
Ho pensato, quindi, all'eventualità di scrivere da me questo componente.
I problemi principali sono due, però:
1. Non so come fare per far restituire l'immagine dal componente (immagine
che non deve essere salvata su disco, ma restituita direttamente come dato
binario), in modo da scrivere, nella pagina,qualcosa del tipo:
    <img src="<%=oImg.Resize("/images/pippo.jpg",100,100)%>">
Dove il primo parametro dovrebbe essere il percorso relativo (o assoluto,
eventualmente, usando server.mappath()), il secondo e il terzo, le
dimensioni (in pixel o in percentuale).
2. Non so se devo usare un oggetto o una serie di istruzioni.
Nel primo caso, conosco solo il controllo "Picture", il quale,
probabilmente, non fa al caso mio.
Nel secondo caso, non so come ottenere, dai dati binari dell'immagine
originale, l'immagine ridimensionata.
Qualcuno può aiutarmi?

osservazione credo abbastanza stupida.........
ma non ti conviene ridimensionare l'immagine direttamente nel tag IMG ?
cioč, scrivendo....
<img src="pippo.jpg" width="100" height="100>
l'immagine viene ridimensionata automaticamente dal browser..........!!!!!
non so, credo di non aver capito il problema fino in fondo, perchč cosě la
soluzione č davvero troppo semplice....
se no conosco delle DLL da installare server-side e che manipolano immagini,
perň alla fine il file deve essere salvato su disco da qualche parte.......
ciao, e good coding!!!
--
Damiani Liborio Igor
idam...@hotmail.com
 - 
igor.d...@light.it
http://www.igordamiani.it
ICQ : 11847262

 soluzione è davvero troppo semplice....
Si che è semplice, ma le miniature servono per non generare traffico di
rete,
E' vero il browser ridimesiona l'immagine, ma pensa ad una architettura in
internet.
Sul server ci sono i miei file jpg diciamo 10 da 100Kb, 10x100Kb=1Mb (circa)
Le miniature occupano diciamo 5Kb ---> 5Kb*10=50Kb circa
Come giustamente hai detto tu è il browser che ridimensiona le immagine,
questo vuol
dire che il browser prima si deve scaricare le immagini cioè il mega e poi
ridimensionarle,
ma a questo puntoa cosa servono più le miniature?
Ci vuole qualcosa che lo faccia dal lato server e che faccia viaggiare i
50Kb e non
1Mb di dati (se pensi che poi di quelle immagini me ne interessava solo una
....)
                        spero di esser stato chiaro.
Per quanto riguarda la richiesta di koo, io avevo risolto la cosa in maniera
un po'
artigianale, probabilmente non è quello che serve ma te la descrivo lo
stesso.
La pagina con le miniature era completamente dinamica, avevo creato uno
script asp
che prendeva da una directory le miniature, poi attraverso il nome delle
miniature ricavava
i nomi delle immagini e creava i link a queste che erano presenti in
un'altra directory,
per creare le miniature usavo Acdsee 3.0.
Ciao
danilo

giusta osservazione, però quello che propone koo non credo sia fattibile,
perchè alla fine il browser può visualizzare immagini solamente se
effettivamente sul server esiste il file corrispondente!!!
perciò lui vorrebbe ridimensionare un file immagine, senza scriverne uno
nuovo, e questo non è possibile........almeno ,credo!!!
forse l'unica soluzione è quella di creare un file temporaneo........però
alla fine la pagina HTML risultante deve essere dinamica, cioè cambiare il
tag IMG ogni volta, visto che il nome del file immagine da visualizzare
cambia ogni volta..........
a questo punto io duplicherei tutte le immagini, creando per ciascuna di
essi una versione più piccola.......
mah!!!


 credo che possa andarti bene
Grazie, ma vedo che il programmino salva il file, mentre io devo ottenere i
dati binari dell'immagine, da restituire, con l'appropriato MIME-Type, alla
pagina web.

Cerco di rispondere sia ad Igro sia a Danilo.
1. E' possibilissimo visualizzare un'immagine su di una pagina web, senza
che l'immagine sia stata precedentemente creata.
2. Componenti come quello che voglio creare esistono già, come ho scritto,
solo che costano tanto.
3. Non voglio creare PRIMA le miniature, altrimenti il problema non ci
sarebbe. Io voglio solo avere le immagini originali e visualizzare
dinamicamente le miniature e, come ho scritto nel punto 1, è possibile
farlo... il problema è come farlo.

Ho capito,
appena avro' un po di tempo inseriro' anche qs funzione ,
se vuoi puoi provare tu a modificare il codice, prova a basarti sulla
funzione per il salvataggio..
Ciao, ti faro' sapere.
"koo" <koo@k.k> wrote in message news:9n4u4c$4r5$1...@serv1.iunet.it...


come faresti a risolvere il punto 1 ?
anche io ho avuto in passato il tuo problema, perņ sono giunto alla
conclusione che cliccando con il destro su un'immagine su una pagina Web
alla fine devo sempre leggere l'origine del file.....ovvero il percorso
http......
mah........grazie della delucidazione!!!


 http......
Il punto uno č uno dei problemi che devo risolvere :-)
Che si possa fare č certo.
Quando vuoi salvare un'immagine da una pagina web, cliccando con il tasto
destro, vedi l'indirizzo dell'immagine.
Scegliendo "salva immagine con nome", il browser, utilizzando il protocollo
HTTP, richiede quel file e riceve i pacchetti di dati.
Utilizzando un componente esterno, una volta capito come fare, non cambia
nulla.
Leggendo il sorgente di una pagina che utilizza questo componente, potresti
vedere, per esempio, qualcosa di questo tipo:
<img src="/scripts/imgrsz.asp?ID=001">
Quindi, cliccando con il tasto destro del mouse, e scegliendo "salva
immagine con nome", il browser chiederebbe il file
"/scripts/imgrsz.asp?ID=001"> e riceverebbe l'immagine (l'importante č far
precedere le informazioni con l'appropriato myme-type).

mhhhh....non sono molto convinto, a dire il vero.......
l'idea non è male, però tieni presente che la proprietà SRC del tag IMG non
contiene l'immagine binaria vera e propria.......ma un riferimento al file
immagine, che nel tuo caso è un ASP....mah!!!!!
con le pagine ASP ci ho lavorato parecchio, non ho mai usato mime-type, però
non credo che possano "ritornare" un file binario.......da come la usi tu,
sembra quasi che stai richiamando una funzione.......mah.....
io qualche dubbio ce l'ho ancora.........


 io qualche dubbio ce l'ho ancora.........
Ti dico invece che è così.
La proprietà SRC è un riferimento al file.
Quando scrivo che SRC="/pippo.gif", il parser del browser carica quel file
che, quarda caso, è un file binario, con il mime-type specifico (il
mime-type in questo caso è fornito automaticamente dal web server,
deducendolo dall'estensione; potenzialmente, potrei configurare il web
server affinchè tutti i file con estensione "abc" vengano considerati come
dei file pdf, per esempio).
Se io, in una pagina ASP, scrivo come primissima cosa il mime-type di un
file jpg e poi fornisco i dati in formato binario, ecco ottengo un'immagine.
Questa è una procedura tipica per chi memorizza oggetti binari (campi BLOB)
in database da consultare via Web.
Qui trovi una dimostrazione pratica di quanto dico:
http://www.aspitalia.com/newsgroup/faq.asp?ID=49

guarda, davvero......non lo sapevo proprio........
e sono stato anche qui a farti perdere un po' di tempo............
cmq mi hai fatto imparare una cosa nuova, che non sapevo proprio!!!!!
Interessante davvero.......
quindi, quello che vorresti fare sarebbe quello di caricare un file immagine
residente sul server, ridimensionarla "al volo" (presumibilmente in RAM) e
restituirla al client tramite il Response.BinaryWrite.............giusto???
mamma.......


 mamma.......
Sě, beh, il succo č quello. :-)
Ma il problema piů grosso, per me, č ridimensionare l'immagine.
Non so proprio come fare.
Forse posso usare l'oggetto Picture di VisualBasic? Perň, poi, supponendo
che riesca a ridimensionare l'immagine, come faccio a leggerne i dati in
binario?
Una volta fatto questo, non dovrei avere grossi problemi ad andare avanti.

capito.........
secondo me per toglierti un po' di problemi dovresti comunque appoggiarti su
un file immagine temporaneo, cosě puoi sfruttare quei componenti che
ridimensionano......
mi spiego meglio........
carico l'immagine originale
ridimensiono l'immagine, salvandola usando ad esempio il Session.ID (cosě
puoi gestire singolarmente ciascun utente che visita il sito)
spedisco l'immagine ridimensionata temporanea al browser........
cancello il file temporaneo...........
se invece proprio non vuoi usare files temp, beh......boh......non so se con
vb riesci ad ottenere qualcosa......forse in C puoi dichiarare una sorta di
immagine in RAM dell'immagine stessa, usando strutture appropriate, perň non
l'ho mai fatto.......
(mamma, ma che thread abbiamo tirato in piedi???)    :-))))


 (mamma, ma che thread abbiamo tirato in piedi???)    :-))))
Spero solo che serva a risolvere il mio problema :-)