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