Script 401 su www.aspitalia.com
Private Sub ResizeAndSave(imgStr As Stream, Width As Integer, Height As Integer, FileName As String)
'creo il bitmap dallo stream
Dim bmpStream As System.Drawing.Image = System.Drawing.Image.FromStream(imgStr)
'creo un nuovo bitmap ridimensionandolo
Dim img As New Bitmap(bmpStream, New Size(Width, Height))
'salvo l'immagine ridimensionata
img.Save(FileName, System.Drawing.Imaging.ImageFormat.Jpeg)
Response.Write("fatto!")
End Sub
La funzione accetta 4 parametri:
- lo stream di dati. Uno stream è un flusso di bytes che possono rappresentare files immagini, testo ecc. In questo modo noi possiamo ridimensionare un'immagine uploadata da un utente, o un'immagine prelevata da uno specifico url o un'immagine presente già su disco;
- width e height: rispettivamente la larghezza e l'altezza dell'immagine da salvare;
- fileName: il nome del file con il percorso dell'immagine da salvare.
La funzione crea un oggetto Image da uno stream che rappresenta la nostra immagine. Successivamente crea un oggetto Bitmap, oggetto che eredita da Image, ma ha più funzioni. Il costruttore infatti ci permette di specificare le dimensioni con il risultato che se ne ridimensiona l'immagine originale. Modificando la funzione con un piccolissimo calcolo matematico possiamo trasformare proporzionalmente l'immagine utilizzando le proprietà Width e Height dell'oggetto bmpStream. Con il metodo Save infine salviamo l'immagine.
Il secondo parametro di questa funzione accetta un tipo enum ImageFormat, che ci permette di specificare il formato. Ho scelto Jpeg perché nel mio caso utilizzo immagini fotografiche.