21 messaggi dal 06 settembre 2002
www.xhtmlstrict.it
Ciao a tutti, utilizzo questo script

<%@ Page Language="C#" %>
<%@ import Namespace="System.Drawing" %>
<%@ import Namespace="System.Drawing.Imaging" %>
<%@ import Namespace="System.Text.RegularExpressions" %>
<script runat="server">

    int MaxWidth = 100; // Larghezza massima dopo il quale l'immagine viene ridimensionata
    int MaxHeight = 100;  // Altezza massima dopo il quale l'immagine viene ridimensionata
    int ScaleFactor = 20; // Fattore di scala per la miniatura
    System.Drawing.Image oldImage, newImage;

    void Page_Load(Object sender, EventArgs e) {
        if ( Request.QueryString["FileName"] != null ) {
            string strFileName = Convert.ToString(Request.QueryString["FileName"]);
            if ( Request.QueryString["ScaleFactor"] != null && Convert.ToString(Request.QueryString["ScaleFactor"]) != "" && IsInteger(Convert.ToString(Request.QueryString["scalefactor"])) ) ScaleFactor = Convert.ToInt32(Request.QueryString["ScaleFactor"]);
            if ( strFileName != "" ) {
                try {
                    oldImage = System.Drawing.Image.FromFile( Server.MapPath(strFileName) );
                    if ( oldImage.Width > MaxWidth || oldImage.Height > MaxHeight ) {
                        // Immagine troppo grande, visualizzo la miniatura
                        newImage = oldImage.GetThumbnailImage( (oldImage.Width*ScaleFactor/100), (oldImage.Height*ScaleFactor/100), null, IntPtr.Zero);
                        Response.ContentType = "image/jpeg";
                        newImage.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
                        oldImage.Dispose();
                        newImage.Dispose();
                        oldImage = null;
                        newImage = null;
                    } else {
                        // Immagine piccola, non faccio nulla
                        Response.ContentType = "image/jpeg";
                        oldImage.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
                        oldImage.Dispose();
                        oldImage = null;
                    }
                } catch (Exception ex) {
                    Response.Write(ex.Message);
                }
            }
        }
    }

    private bool IsInteger(string strTmp) {
        Regex objNotIntPattern = new Regex("[^0-9-]");
        Regex objIntPattern = new Regex("^-[0-9]+$|^[0-9]+$");
        return !objNotIntPattern.IsMatch(strTmp) && objIntPattern.IsMatch(strTmp);
    }

</script>


per visualizzare al volo le miniature di alcune foto. Il problema è che la qualità dell'immagine finale è pessima. Come è possibile regolare la qualità (suppongo sia un problema di compressione JPEG)?

Grazie

Stefano Pessina
non utilizzare il metodo GetThumbnailImage.
tale metodo è adatto a ottenere antreprime di piccole dimensioni, mi sembra che non sia consigliato superare il centinaio di pixel

dai un occhiata allo #401

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.