Dato che ho dimenticato di riportare qualcosa, ecco il file modificato
codice:
<%@ Page Language="VB" %>
<%@ import Namespace="System.Drawing" %>
<%@ import Namespace="System.Drawing.Imaging" %>
<%@ import Namespace="System.Drawing.Drawing2D" %>
<script runat="server">
'Descrizione: Ridimensionamento delle immagini al volo
'Versione 1.0 09/10/2007
'Revisione 2.1 del 11/01/2007
'Autore: Marco Meucci aka Samsara aka Wodka40°
'Contatto: marco@martek.it MSN: samsrulez@latinmail.com
'Compatibilità: NET framework 2.0
'Derivata dall'esempio su MSDN
'Licenza : freeware
'Limitazioni licenza: Non togliere questo header
'Garanzia: Nessuna garanzia è fornita.Lo script è fornito così come è.
'non è imputabile IN ALCUN MODO il danno eventuale derivante
'dall'uso (proprio e/o improprio) di questo codice
Private Sub Page_Load(sender As Object, e As EventArgs)
'Righe di codice consigliate da Microsoft
'Pulisce lo stream
Response.Clear()
'imposta l'header http
Response.ContentType = "image/jpeg"
' INVIA LA PAGINA SOLO QUANDO E' COMPLETA!
Response.BufferOutput = True
' dichiarazione di variabili.
'*************************************************
Dim larghezzaRichiesta As Integer
'divergenza da Dblog Ufficiale
Dim altezzaRichiesta as Integer = 0
'qui si aprono le danze
'Qui sotto si decide se le immagini devono essere ridimensionate proporzionalmente
'oppure "stirate" per rientrare nelle dimensioni impostate
Dim RidimensionaProporzionalmente As Boolean = True
'limite massimo di larghezza.
'se non serve impostatelo a zero!
Dim MAXlarghezza As Integer = 480
'Impostazioni immagine se non si ridimensione proporzionalmente
Dim AltezzaImposta As Integer = 300
Dim LarghezzaImposta As Integer = 400
'
Dim imgPath As String
Dim dumImmagine As String
Dim NomeFile As String = ""
Dim PathFile As String = ""
Dim SalvaThumb As Boolean = False
Dim dumTxt As String
'recupero il nome dell'immagine passato!
dumImmagine = Convert.ToString(Request.QueryString("Img"))
'trovo il path completo dell'immagine sul mio server
imgPath = Server.MapPath(dumImmagine)
'cerca il nome dell'immagine
Dim pos As Integer
pos = InStrRev(imgPath, "\", , CompareMethod.Text)
If pos > 0 Then
NomeFile = imgPath.Substring(pos)
PathFile = imgPath.Remove(pos, Len(NomeFile))
End If
'ATTENZIONE ORA: mi creo una nuova immagine in memoria...
Dim ImmPartenza As System.Drawing.Image
'...e la riempio con il mio file
ImmPartenza = System.Drawing.Image.FromFile(imgPath)
'Adesso guardo come ridimensionarla!
'io uso questo sistema
'recupero la larghezza che si desidera
larghezzaRichiesta = Convert.ToInt32(Request.QueryString("opx"))
'Divergenza dalla versione ufficiale di Dblog
altezzaRichiesta = Convert.ToInt32(Request.QueryString("opy"))
'Aggiunta 2.0
If Convert.ToInt32(Request.QueryString("DimCustom")) > 0 Then
RidimensionaProporzionalmente = False
Else
RidimensionaProporzionalmente = True
End If
'dumTxt = Convert.ToString(Request.QueryString("sthumb"))
Dim hthumb As String = Convert.ToString(Request.QueryString("sthumb"))
If hthumb = "" Then
SalvaThumb = False
Else
SalvaThumb = True
End If
Dim TestoSovraimposto As String = ""
Dim dimensioneTestoSovraimposto As Single = 7
dumTxt = Convert.ToString(Request.QueryString("Testo"))
If dumTxt <> "" Then
TestoSovraimposto = dumTxt
Else
TestoSovraimposto = ""
End If
'controllo se rientra nei limiti massimi
'****************************************************************************
If MAXlarghezza > 0 Then 'se desidero controllare una larghezza massima
If larghezzaRichiesta > MAXlarghezza Then
larghezzaRichiesta = MAXlarghezza
End If
End If
'qui si possono controllare MOLTE ALTRE condizioni
' ad esempio:
'impedire di ridimensionare una immagine con dimensioni
'MAGGIORI di quelle originarie: lo lascio fare a voi!
'****************************************************************************
'...adesso recupero dall'immagine originaria anche l'Aspect ratio
'ossia il rapporto fra le sue dimensioni Larghezza/Altezza
' a che mi serve? beh a ridimensionare proporzionalmente!
'Le formule una volta trovato l'aspect ratio sono banali
'- se conosco la nuova larghezza... nuovAltezza = NuovaLarghezza / Ratio
'- se l'utente la nuova altezza.... nuovaLarghezza = NuovaAltezza * Ratio
'naturalmente arotondando in interi...ci sta che si scarti di UN (1) pixel!
'A) Dimensioni immagine originaria
Dim TmpHeight As Integer = ImmPartenza.Height
Dim TmpWidth As Integer = ImmPartenza.Width
'B) Aspect Ratio= rapporto fra Altezza e larghezza
Dim AspectRatio As Single 'è un numero decimale
'Trova l'aspect ratio
AspectRatio = Convert.ToSingle(TmpWidth / TmpHeight)
If RidimensionaProporzionalmente Then
'Ridimensionamento proporzionale attivato:
'questa dimensione la conosco già
TmpWidth = larghezzaRichiesta
'conosco la larghezza e l'aspect ratio:
'nuovAltezza = NuovaLarghezza / Ratio
If altezzaRichiesta <= 0 Then
TmpHeight = Convert.ToInt32(larghezzaRichiesta / AspectRatio)
Else
TmpHeight = altezzaRichiesta
TmpWidth = Convert.ToInt32(altezzaRichiesta * AspectRatio)
End If
Else
'le dimensioni delle thumb sono quelle impostate
'anche a costo di deformare un po l'immagine
If altezzaRichiesta > 0 Then
TmpHeight = altezzaRichiesta
Else
TmpHeight = AltezzaImposta
End If
If larghezzaRichiesta > 0 Then
TmpWidth = larghezzaRichiesta
Else
TmpWidth = LarghezzaImposta
End If
End If
'Adesso siamo in dirittura finale
'mi costruisco una nuova bitmap pertendo dai dati originari
'MA con le nuove dimensioni
Dim bmp As New Bitmap(ImmPartenza, TmpWidth, TmpHeight)
'Aggiunta 2.0 Testo sovraimposto
'mi costruisco un oggetto Graphics per spippolare con l'immagine!!!
Dim g As Graphics = Graphics.FromImage(bmp)
If TestoSovraimposto <> "" Then
'Sovraimpongo alla mia immagine ridimensionata un testo!
'Specifico che font usare, dimensione, stile!
Dim usaFont As New Font("Tahoma", dimensioneTestoSovraimposto, FontStyle.Regular)
'per cambiare il colore usate l'oggetto Brushes!
'es. Brushes.Snow
g.DrawString(TestoSovraimposto, usaFont, Brushes.Snow, New PointF(1, 3))
End If
'Versione 2.1
If SalvaThumb = True Then
Dim NomeThumb As String
'Dim usaFont2 As New Font("Tahoma", dimensioneTestoSovraimposto, FontStyle.Regular)
'per cambiare il colore usate l'oggetto Brushes!
'es. Brushes.Snow
NomeThumb = PathFile & "Thumb_" & hthumb & "_" & NomeFile
If File.Exists(NomeThumb) Then File.Delete(NomeThumb)
'g.DrawString(NomeThumb, usaFont2, Brushes.Snow, New PointF(1, 3))
bmp.Save(NomeThumb, ImageFormat.Jpeg)
End If
'********************************************************************
'Ecco il salvataggio della nostra immagine sullo stream in uscita!
bmp.Save(Response.OutputStream, ImageFormat.Jpeg)
'********************************************************************
'rilascia la memoria occupata da tutti gli oggetti!
g.Dispose()
bmp.Dispose()
ImmPartenza.Dispose()
' con flush inviamo al client tutto quello che c'è nel buffer!
Response.Flush()
End Sub
</script>
<html>
<head>
</head>
<body>
<form id="Form1" runat="server">
</form>
</body>
</html>