Per chi non mastica molto il C# e volesse capire meglio il funzionamento dello script, ecco una bella 'traduzione' in VB.
Anche se sinceramente per me C# o VB è indifferente (io uso VB hehehe).

Il codice va preso e incollato in una pagina chiamata "GetThumbnail.aspx".

codice:
<%--

------------
Descrizione:
------------
    Script per la creazione delle miniature OnTheFly di immagini.
    Lo script (in C#) è stato preso dal forum di www.HTML.it , originariamente postato da R.B. Riddick,
    modificato da InstinctCoder e infine da me (Fusion) 'tradotto' in VB.NET.

    
--------------------
Esempio di Utilizzo:
--------------------
    <html>
        <body>
            [img]GetThumbnail.aspx?src=immagine.jpg&w=150&h=150[/img]
        </body>
    </html>

    
----------
Parametri:
----------
    src : percorso del file da utilizzare per creare la miniatura (thumbnail)
    w   : larghezza della miniatura
    h   : altezza della miniatura
    
--%>


<%@ Page Language="VB" %>

<%@ import Namespace="System"%>
<%@ import Namespace="System.IO"%>
<%@ import Namespace="System.Drawing" %>
<%@ import Namespace="System.Drawing.Imaging" %>
<%@ import Namespace="System.Text.RegularExpressions" %>



<script runat="server">
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim ThumbnailWidth As Integer = 64
        Dim ThumbnailHeight As Integer = 64
        Dim strFileName As String = ""
        
        Dim orgImgWidth As Double = 0.0
        Dim orgImgHeight As Double = 0.0
        Dim rThumbnailWidth As Double = 0.0
        Dim rThumbnailHeight As Double = 0.0
        
        Dim orgImage As Drawing.Image
        
        If (Request.QueryString("w") <> "") Then
            ThumbnailWidth = Convert.ToInt32(Request.QueryString("w"))
        End If
        
        If (Request.QueryString("h") <> "") Then
            ThumbnailHeight = Convert.ToInt32(Request.QueryString("h"))
        End If
        
        If (Request.QueryString("src") <> "") Then
            strFileName = Convert.ToString(Request.QueryString("src"))
        End If
        
        If (strFileName <> "") Then
            Try
                orgImage = Drawing.Image.FromFile(Server.MapPath(strFileName))
                Using tmpImage As Bitmap = New Bitmap(orgImage)
                    rThumbnailWidth = ThumbnailWidth
                    rThumbnailHeight = ThumbnailHeight
                    orgImgWidth = tmpImage.Width
                    orgImgHeight = tmpImage.Height
                    
                    ' Se l'immagine è più piccola del Thumbnail forziamo le dimensioni di 
                    ' quest'ultimo alle dimensioni dell'immagine.
                    If (orgImgWidth < ThumbnailWidth) Then
                        ThumbnailWidth = tmpImage.Width
                    End If
                    
                    If (orgImgHeight < ThumbnailHeight) Then
                        ThumbnailHeight = tmpImage.Height
                    End If
                    
                    ' Se le dimensioni dell'immagine e del Thumbnail corrispondono non facciamo nulla.
                    If (tmpImage.Width <> tmpImage.Height) Then
                        ' Altrimenti continuiamo a fare i nostri controlli per calcolarne le 
                        ' giuste dimensioni e quindi creare la nostra nuova immagine con
                        ' l'aspectratio corretto.
                        If (tmpImage.Width > tmpImage.Height) Then
                            rThumbnailWidth = ThumbnailWidth
                            rThumbnailHeight = CType((tmpImage.Height * ThumbnailWidth / tmpImage.Width), Double)
                        ElseIf (tmpImage.Height > tmpImage.Width) Then
                            rThumbnailHeight = ThumbnailHeight
                            rThumbnailWidth = CType((tmpImage.Width * ThumbnailHeight / tmpImage.Height), Double)
                        End If
                    End If
                    ' Liberiamo la risorsa
                    tmpImage.Dispose()
                End Using
                
                Using fBitmap As Bitmap = New Bitmap(orgImage, CType(rThumbnailWidth, Integer), CType(rThumbnailHeight, Integer))
                    Response.ContentType = orgImage.RawFormat.ToString()
                    Response.Clear()
                    Response.BufferOutput = True
                    Response.AddHeader("Content-Disposition", "filname=" & strFileName)
                    fBitmap.Save(Response.OutputStream, orgImage.RawFormat)
                    fBitmap.Dispose()
                End Using
                orgImage.Dispose()
            Catch ex As Exception
                Response.Write(ex.Message)
            End Try
        End If
    End Sub
</script>

Complimenti a chi ha scritto o collaborato nella scrittura di questo script. Mi è servito a capire un paio di cose visto che sono ancora un bambino che muove i primi passi nel mondo di ASP.NET.


Fusion