ciao
premetto che non capisco molto di asp.net.
ho trovato in rete un resize che uso in una galleria di immagini... ecco il codice:
ogni volta che apro la pagina che contiene le preview lui fa il resize e salva una copia nella cartella che gli ho settato, pero quando mi ricollego anzicche caricarsi le miniature che si è creato ... fa nuovamente il resize.codice:<%@ Page Language="VB" %> <%@ Import Namespace="System" %> <%@ Import Namespace="System.IO" %> <%@ Import Namespace="System.Web" %> <%@ Import Namespace="System.Drawing" %> <script runat="server"> 'Copyright (C) 2007 Daniele Iunco 'This program is free software; you can redistribute it and/or modify 'it under the terms of the GNU General Public License as published by 'the Free Software Foundation; either version 2 of the License, or '(at your option) any later version. 'This program is distributed in the hope that it will be useful, 'but WITHOUT ANY WARRANTY; without even the implied warranty of 'MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 'GNU General Public License for more details. 'You should have received a copy of the GNU General Public License along 'with this program; if not, write to the Free Software Foundation, Inc., '51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 'resizetool.aspx v1.0 'Author: Daniele Iunco 'Date: 9th May 2007 'Limite massimo per l'altezza in pixel Private Const MaxHeightSafe As Integer = 800 'Limite massimo per la larghezza in pixel Private Const MaxWidthSafe As Integer = 800 'Percorso dell'immagine su cui reindirizzare le richieste non valide Private Const ErrorImagePath As String = "/error.jpg" 'Percorso in cui salvare le copie delle immagini, il percorso indicato deve avere i permessi in scrittura Private Const ImageCachePath As String = "/public/tmp_photo/preview_thumb_sofia_tmp" 'Salva su disco una copia riutilizzabile delle thumbnails create Private Const UseCache As Boolean = True 'Di seguito sono riportati i valori predefiniti che verranno utilizzati quando non vengono specificati parametri Private Const DefaultHeight As Integer = 450 Private Const DefaultWidth As Integer = 450 Private Const DefaultResizeMode As ResizeMode = ResizeMode.AutoResize Private Enum ResizeMode AutoResize = 0 ManualResize = 1 End Enum Private ReadOnly Property Mode() As ResizeMode Get Dim myReqMode As String = Request("mode") If myReqMode Is Nothing OrElse Not IsNumeric(myReqMode) Then Return DefaultResizeMode If CInt(myReqMode) = 0 Then Return ResizeMode.AutoResize Else Return ResizeMode.ManualResize End Get End Property Private ReadOnly Property MaxHeight() As Integer Get Dim myValue As String = Request("height") If myValue Is Nothing OrElse Not IsNumeric(myValue) Then Return DefaultHeight Dim myIntValue As Integer = CInt(myValue) If myIntValue < MaxHeightSafe Then Return myIntValue Else Return MaxHeightSafe End If End Get End Property Private ReadOnly Property MaxWidth() As Integer Get Dim myValue As String = Request("width") If myValue Is Nothing OrElse Not IsNumeric(myValue) Then Return DefaultWidth Dim myIntValue As Integer = CInt(myValue) If myIntValue < MaxWidthSafe Then Return myIntValue Else Return MaxWidthSafe End If End Get End Property Private _ImagePath As String Private ReadOnly Property ImagePath() As String Get If Not _ImagePath Is Nothing Then Return _ImagePath Dim sRequestPath As String = Request.QueryString("path") If sRequestPath Is Nothing Then Return Nothing 'Rimuovo le doppie / e i doppi . con le espressioni regolari sRequestPath = Regex.Replace(sRequestPath, "\/{2,}", "/") sRequestPath = Regex.Replace(sRequestPath, "\.{2,}", ".") If sRequestPath.Substring(0, 1) = "/" Then sRequestPath = sRequestPath.Substring(1) _ImagePath = sRequestPath Return _ImagePath End Get End Property Sub Page_Load(ByVal Sender As Object, ByVal e As System.EventArgs) Dim LocalImageFilePath As String Dim LocalThumbnailCacheFilePath As String LocalImageFilePath = Server.MapPath("/" & ImagePath) If Not File.Exists(LocalImageFilePath) Then Response.Redirect(ErrorImagePath) Exit Sub End If Dim TempFilePath As String = Server.MapPath(ImageCachePath) LocalThumbnailCacheFilePath = Path.Combine(TempFilePath, ImagePath.Replace("/", "_")) & "_" & Int(Mode) & "_" & Int(MaxWidth) & "_" & Int(MaxWidth) & ".thumb" Dim mySourceFile As New System.IO.FileInfo(LocalImageFilePath) If UseCache Then If File.Exists(LocalThumbnailCacheFilePath) Then Dim myDestFile As System.IO.FileInfo myDestFile = New System.IO.FileInfo(LocalThumbnailCacheFilePath) 'Se il file della thumbnail è stato modificato dopo il file sorgente 'allora è valido e uso quello If myDestFile.LastWriteTime.CompareTo(mySourceFile.LastWriteTime) = 1 Then 'Il file esiste e va bene Response.ContentType = "image/jpeg" Response.WriteFile(myDestFile.FullName) Response.End() Exit Sub Else 'Il file esiste ma è vecchio e va sostituito myDestFile.Delete() End If End If End If Dim orginalimg, thumb As System.Drawing.Image Try orginalimg = System.Drawing.Image.FromFile(mySourceFile.FullName) Catch Response.Redirect(ErrorImagePath) Exit Sub End Try Dim ThumbnailWidth, ThumbnailHeight As Integer Select Case Mode Case ResizeMode.AutoResize ' ResizeMode.AutoResize: Ridimensiona l'immagine per restare nei limiti impostati, mantenendo le proporzioni Dim myRatio As Double = orginalimg.Width / orginalimg.Height If myRatio > 1 Then 'La larghezza è maggiore dell'altezza, quindi fisso l'altezza e calcolo il resto ThumbnailHeight = MaxHeight ThumbnailWidth = orginalimg.Width / orginalimg.Height * MaxHeight ElseIf myRatio < 1 Then 'L'altezza è maggiore della larghezza, quindi fisso la larghezza e calcolo il resto ThumbnailWidth = MaxWidth ThumbnailHeight = orginalimg.Height / orginalimg.Width * MaxWidth ElseIf myRatio = 1 Then 'Larghezza = Altezza ThumbnailWidth = MaxWidth ThumbnailHeight = MaxHeight End If Case ResizeMode.ManualResize ' ResizeMode.ManualResize: Ridimensiona con le misure indicate nei parametri ThumbnailWidth = MaxWidth ThumbnailHeight = MaxHeight End Select Response.ContentType = "image/jpeg" 'Creo l'immagine con le misure calcolate, in formato Jpeg thumb = orginalimg.GetThumbnailImage(ThumbnailWidth, ThumbnailHeight, Nothing, IntPtr.Zero) If UseCache Then Dim myS As New IO.FileStream(LocalThumbnailCacheFilePath, IO.FileMode.CreateNew) thumb.Save(myS, System.Drawing.Imaging.ImageFormat.Jpeg) myS.Close() orginalimg.Dispose() thumb.Dispose() Response.WriteFile(LocalThumbnailCacheFilePath) Else thumb.Save(Response.OutputStream, Imaging.ImageFormat.Jpeg) thumb.Dispose() End If End Sub </script>
risultato: ci impiega sempre un casino a caricare le preview
come posso modificare lo script in maniera che quando richiamo la foto se esiste la preview si carica questa e non rifa tutto il giro?

Rispondi quotando