Salve a tutti, utilizzo questo script per il resize delle immagini:
codice:
<%@ Import Namespace="System.Drawing"%>
<%@ Import Namespace="System.Drawing.Imaging"%>
<SCRIPT RUNAT="SERVER">
Sub Page_Load()
Dim width as Integer = 0
Dim height as Integer = 0
try
' ricava dimensioni dalla richiesta
if not Request.QueryString("nwidth") is Nothing Then
width = Int32.Parse(Request.QueryString("nwidth"))
End if
if not Request.QueryString("nheight") is Nothing Then
height = Int32.Parse(Request.QueryString("nheight"))
End if
catch ex as Exception
End Try
' ridimensiona l'immagine se specificato
Dim immagine as String = Server.MapPath(Request("img"))
if Not System.Io.File.Exists(immagine) then
immagine = Server.MapPath("/immagini/nondisponibile.jpg")
end if
call ImgRedim(immagine, width, height)
' fermo il resto della risposta
Response.End()
End Sub
' Funzione di redim
Public Sub ImgRedim(immagine as String, width as Integer, height as Integer)
Dim bmp as System.Drawing.Bitmap = CType(System.Drawing.Image.FromFile(immagine), System.Drawing.Bitmap)
' c'è da ridimensionare?
if width>0 or height>0 then
' se è specificata solo la larghezza, calcola l'altezza
if height = 0 Then
height = Convert.ToInt32(width / bmp.Width * bmp.Height)
End if
' (e viceversa)
if width = 0 Then
width = Convert.ToInt32(height / bmp.Height * bmp.Width)
End if
' creo la Thumbnail con i parametri impostati
Dim miniaturabmp as New System.Drawing.Bitmap(bmp, width, height)
' salvo sullo stream di output
if immagine.EndsWith(".jpg") Then
miniaturabmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
else
miniaturabmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif)
end if
' pulizia
miniaturabmp.Dispose()
else
' salvo sullo stream di output
if immagine.EndsWith(".jpg") Then
bmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg)
else
bmp.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif)
end if
end if
' pulizia finale
bmp.Dispose()
End Sub
</SCRIPT>
Lo richiamo in questo modo:
img.aspx?img=tazza.jpg&nwidth=450
Funziona molto bene, ma in questo modo non mi discrimina le immagini orizzontali da quelle verticali, ergo quelle orizzontali risultano essere piú piccole.
Vorrei fare in modo che lo script riuscisse a valutare quale dimensione (altezza o larghezza) dell'immagine sia maggiore, e di conseguenza fare il resize basandosi sulla dimensione maggiore. Non conosco l'asp.net, non sarei capace di fare questa cosa da solo.
Grazie anticipate a chi mi aiuta