Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 38
  1. #1

    Creare contemporaneamente 2 Thumbnail, allego lo script che me ne crea 1.

    Come da oggetto, ho uno script che mi crea una Thumb automaticamente dopo l'upload di un file.

    ecco lo script in asp.net originale: LINK


    ora...io passo a questa pagina i valori principali e lo script mi salva la Thumb sul server in dimensioni PROPORZIONATE.
    Ho bisogno però di salvarne 2 diverse, una di 100px e un'altra di...600 (dico per esempio).

    qualcuno sa come modificare la pagina (se possibile) in modo che mi salvi 2 jpg contemporaneamente?

    tnx

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    :master: dal codice che ho visto, è mia opinione che non sia proprio possibile
    Bisogna riscrivere il codice separando l'unica procedura in più procedure parametrizzate.
    Comunque, spero di avere torto
    Pietro

  3. #3
    grazie innanzitutto per la risposta

    però credo sia possibile fare.... per esempio... un redirect alla fine dello script in ASP.Net che mi rimanda ad un ALTRA pagina (nome diverso) che abbia però lo STESSO script. o sbaglio?

    perchè in pratica io carico l'immagine sul server con uno script in ASP, quando termina l'upload io richiamo la pagina in ASP.Net che mi va a prendere il file uploadato (tramite la querystring) e di esso mi salva una Thumbnail.
    In teoria, a sua volta si dovrebbe poter chiamare NUOVAMENTE lo script in ASP.Net ridando semplicemente valori diversi. o no?

    il problema è:

    come si fa a fare un redirect con quel codice passando i valori della querystring?

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    :master: cerco di spiegarmi meglio con un esempio

    questa è una paginenetta asp (non asp.net) che richiama tre immagine uguali, diversamente ridimensionate:

    [img]img.aspx?p_img=./DSCN0010.png&p_max=500[/img]


    [img]img.aspx?p_img=./DSCN0010.png&p_max=250[/img]


    [img]img.aspx?p_img=./DSCN0010.png&p_max=100[/img]

    l'esempio è minimale, ma come vedi gli passo:

    1) la pagina che fa le operazioni
    2) l'immagine che voglio
    3) la dimensione che voglio

    la pagina ricevente, img.aspx, recupera i parametri e lancia le procedure che restituiscono le immagini ridimensionate. A titolo di esempio, in c# perchè l'ho sotto mano, ma in basic è lo stesso:

    codice:
    <script runat="server">
    
    
        /*-------------------------------------------------------------------------------------------
         * Ricevo:
         *      p_img   = percorso immagine, assoluto (c:\tmp\prova.jpg)
         *                                  relativo (../prova.jpg)
         *                                  remoto (http://localhost/prova.jpg
         *              il formato può essere jpg, png, tif, bmp, gif
         * 
         * 
         *      p_max   = dimensione max dell'immagine in px, -1 per avere
         *                                  dimensioni originali
         * 
         * Restituisco immagine ridimensionata in formato jpg, qualità alta, compressione predefinita
         * ------------------------------------------------------------------------------------------*/
        protected void Page_Load(object sender, EventArgs e)
        {
            int result;
            try
            {
                string p_img = this.Request.QueryString["p_img"];
                string p_max = this.Request.QueryString["p_max"];
    
                if (string.IsNullOrEmpty(p_img) )
                    throw new Exception("Specificare un percorso immagine valido");
    
                if (string.IsNullOrEmpty(p_max) || !int.TryParse(p_max, out result) )
                    throw new Exception("Specificare una dimensione immagine valida");
                
                img.ImgResizeAndSaveToResponseOutputStream(p_img, int.Parse(p_max));
            }
            catch(Exception ex)
            {
                try
                { 
                    //se posso restituisco una immagine con la descrizione dell'errore
                    Bitmap bmp = img.ImgFromText(ex.Message, Color.White, Brushes.Black, new Font("Arial", 12, FontStyle.Regular, GraphicsUnit.Point));
                    img.ImgSaveToResponseOutputStream(bmp);
                
                }
                catch
                {
                    //altrimenti restituisco una immagine di errore predefinita
                    //letta dal disco
                    this.Response.WriteFile(Server.MapPath("errore_generico.bmp"));
                    this.Response.End();
                
                }
            }
            finally
            { 
            
            }
        }
    </script>
    non c'è nessun redirect ma solo procedure parametrizzate

    in parole povere, recuperi i parametri dalla querystring e li sostituisci nei valori fissi della pagina.
    Pietro

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    scusami, ho guardato meglio e sembra funzionare.

    da una pagina faccio

    [img]resize2_1.aspx?img=dscn0014.jpg&opx=300[/img]
    [img]resize2_1.aspx?img=dscn0014.jpg&opx=200[/img]


    ed ottengo due immagine a 300 e 200px
    Pietro

  6. #6
    si, giustissimo quello che mi dici, ma se ho bisogno di visualizzarle e basta

    io non ho bisogno di visualizzarle sul browser, le devo SALVARE sul server in formati diversi per poi andarle a importare successivamente con il flash.

    perché si tratta di una sorta di galleria fotografica, in cui il mio cliente dovrà uppare delle foto, ma siccome non è pratico del pc, non può mettersi a trasformare le foto con Photoshop ogni volta che le deve uppare, per cui ho bisogno di uno script che salvi 2 foto in contemporanea, in un modo o nell'altro, e il redirect mi sembrava una buona idea per ovviare al problema

    da considerare anche che il sito poggia su un server Windows di Aruba.

    :master:

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    ho visto che salva su disco ma ho dato solo una ochiata superficiale. Domani provo a vedere con più attenzione
    Pietro

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Non so se ti possa bastare. :master:
    Il programma accetta il parametro querystring sthumb. Attualmente, se è valorizzato, stampa l'immagine, altrimenti no.

    dumTxt = Convert.ToString(Request.QueryString("sthumb"))

    If dumTxt = "" Then
    SalvaThumb = False
    Else
    SalvaThumb = True
    End If


    il nome del file salvato è fisso:

    NomeThumb = PathFile & "Thumb_" & NomeFile

    Perciò propongo di usare quel parametro per variare il nome del file. Ad esempio, se ho una immagine di nome prova.jpg e voglio ottenere quattro immagine di risoluzione 100, 200, 300,400 px, con javascript faccio, per esempio:

    codice:
    function Button1_onclick() 
    {
        var img1 = new Image();
        img1.src = "resize2_1.aspx?img=prova.jpg&opx=100&sthumb=100";
    
        var img2 = new Image();
        img2.src = "resize2_1.aspx?img=prova.jpg&opx=200&sthumb=200";
    
        var img3 = new Image();
        img3.src = "resize2_1.aspx?img=prova.jpg&opx=300&sthumb=300";
    
        var img4 = new Image();
        img4.src = "resize2_1.aspx?img=prova.jpg&opx=400&sthumb=400";
        
    }
    ed otterrò nella directory corrente le quattro immagini
    Thumb_100_prova.jpg
    Thumb_200_prova.jpg
    Thumb_300_prova.jpg
    Thumb_400_prova.jpg

    il codice da modificare è:
    'dumTxt = Convert.ToString(Request.QueryString("sthumb"))
    Dim hthumb As String = Convert.ToString(Request.QueryString("sthumb"))


    e

    'NomeThumb = PathFile & "Thumb_" & NomeFile
    NomeThumb = PathFile & "Thumb_" & hthumb & "_" & NomeFile


    ATTENZIONE le immagini prodotte non devono essere presenti e la directory deve avere i permessi di scrittura per l'utente asp.net. Perciò metterei, prima di bmp.Save(NomeThumb, ImageFormat.Jpeg), l'istruzione:
    If File.Exists(NomeThumb) Then File.Delete(NomeThumb)
    Pietro

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    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>
    Pietro

  10. #10
    mi da un errore

    Server Error in '/' Application.
    Runtime Error
    Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.

    Details: To enable the details of this specific error message to be viewable on remote machines, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "Off".

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.