: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.