Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Qualità immagine

  1. #1

    Qualità immagine

    Ciao a tutti, utilizzo questo script

    codice:
    <%@ 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

  2. #2

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 © 2026 vBulletin Solutions, Inc. All rights reserved.