ok, ok, cerco di riproporre il problema in un'altra maniera.
Ho trovato il seguente script che mi permette di creare le miniature delle immagini che compongono la mia galleria:
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. 'advancedresizetool.aspx v1.0 'Author: Daniele Iunco - http://www.gidinet.com 'Date: 28th September 2007 'Limite massimo per l'altezza in pixel Private Const MaxHeightSafe As Integer = 600 '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/tempfiles" '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 = 600 Private Const DefaultWidth As Integer = 800 Private Const DefaultResizeMode As ResizeMode = ResizeMode.AutoResize Private Const AllowCustomFormat As Boolean = False 'Impostare a False per ignorare il parametro del formato, True per utilizzarlo Private Const AllowCustomQuality As Boolean = False 'Impostare a False per ignorare il parametro della qualità, True per utilizzarlo Private Const MinQuality As Long = 10 'Qualità minima Private Const DefaultQuality As Long = 30 'Qualità predefinita Private Const MaxQuality As Long = 100 'Qualità massima Private Enum ResizeMode AutoResize = 0 ManualResize = 1 End Enum Private ReadOnly Property Mode() As ResizeMode Get Dim myReqMode As String = Request.QueryString("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 CustomQuality() As Long Get Dim myValue As String = Request.QueryString("quality") If myValue Is Nothing OrElse Not IsNumeric(myValue) Then Return DefaultQuality Dim myNumValue As Long = CLng(myValue) If myNumValue > MaxQuality OrElse myNumValue < MinQuality Then Return DefaultQuality Else Return myNumValue End If End Get End Property Private ReadOnly Property MaxHeight() As Integer Get Dim myValue As String = Request.QueryString("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.QueryString("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) Handles MyBase.Load Try 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 myImageFormatString As String Dim myImageFormatClass As System.Drawing.Imaging.ImageFormat If AllowCustomFormat = False Then myImageFormatString = "jpeg" myImageFormatClass = System.Drawing.Imaging.ImageFormat.Jpeg Else Dim myType As String = Request.QueryString("format") If myType Is Nothing Then myImageFormatClass = System.Drawing.Imaging.ImageFormat.Jpeg myImageFormatString = "jpeg" Else Select Case myType.Trim.ToLower Case "jpeg" myImageFormatClass = System.Drawing.Imaging.ImageFormat.Jpeg myImageFormatString = "jpeg" Case "png" myImageFormatClass = System.Drawing.Imaging.ImageFormat.Png myImageFormatString = "png" Case Else myImageFormatClass = System.Drawing.Imaging.ImageFormat.Jpeg myImageFormatString = "jpeg" End Select End If End If Dim ImageQuality As Long If AllowCustomQuality Then ImageQuality = CustomQuality Else ImageQuality = DefaultQuality End If Dim TempFilePath As String = Server.MapPath(ImageCachePath) LocalThumbnailCacheFilePath = Path.Combine(TempFilePath, ImagePath.Replace("/", "_")) & "_" & Int(Mode) & "_" & Int(MaxWidth) & "_" & Int(MaxWidth) & "_" & ImageQuality & "." & myImageFormatString & ".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 nella stessa data oppure in seguito 'rispetto al file sorgente allora può essere utilizzato quello If myDestFile.LastWriteTime.CompareTo(mySourceFile.LastWriteTime) >= 0 Then 'Il file esiste e va bene Response.ContentType = "image/" & myImageFormatString Response.WriteFile(myDestFile.FullName) Exit Sub Else 'Il file esiste ma è vecchio e va sostituito myDestFile.Delete() End If End If End If Dim orginalimg 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/" & myImageFormatString Dim panel As Bitmap panel = New Bitmap(ThumbnailWidth, ThumbnailHeight, Imaging.PixelFormat.Format24bppRgb) Dim g As Graphics = Graphics.FromImage(panel) g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic g.SmoothingMode = Drawing2D.SmoothingMode.HighQuality g.PixelOffsetMode = Drawing2D.PixelOffsetMode.HighQuality g.CompositingQuality = Drawing2D.CompositingQuality.HighQuality g.DrawImage(orginalimg, 0, 0, ThumbnailWidth, ThumbnailHeight) Dim stream As System.IO.Stream = Response.OutputStream Dim MemStream As New System.IO.MemoryStream() If myImageFormatClass.Equals(System.Drawing.Imaging.ImageFormat.Jpeg) Then Dim Info() As System.Drawing.Imaging.ImageCodecInfo = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders Dim Params As New System.Drawing.Imaging.EncoderParameters(1) Params.Param(0) = New System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, ImageQuality) panel.Save(MemStream, Info(1), Params) Else panel.Save(MemStream, myImageFormatClass) End If g.Dispose() panel.Dispose() If UseCache Then Dim myS As New IO.FileStream(LocalThumbnailCacheFilePath, IO.FileMode.CreateNew) MemStream.WriteTo(myS) myS.Close() Response.WriteFile(LocalThumbnailCacheFilePath) Else MemStream.WriteTo(Response.OutputStream) End If orginalimg.Dispose() MemStream.Close() MemStream.Dispose() Catch ex As Exception Response.Redirect(ErrorImagePath) End Try End Sub </script>
Le miniature appunto vengo generate nella pagina Asp della galleria mediante il seguente indirizzo
codice:advancedresizetool.aspx?format=jpeg&quality=40&mode=0&width=200&height=150&path=/immagini/miafoto.jpg
Come faccio ad inserire nel precedente indirizzo il path di una immagine il cui percorso è salvato in un campo di tabella su db access?
Ovvero, devo inserire l'indirizzo sopra nel seguente script:
codice:<% if rs("immg1")<>"" then response.write ("<a href=public"&rs("immg1")&" rel='lightbox[ciao]'>[img]public"&rs("immg1")&"[/img]</a>") else response.write ("[img]images/all.gif[/img]") end if %>
Potreste aiutarmi?
Grazie

Rispondi quotando