Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    107

    GetThumbnailImage qualità decente?

    Salve,
    utilizzo questo script per ridimensionare le immagini.
    L'ho utilizzo con lo scopo di rendere più veloce l'apertura delle pagine. Vorrei poter aprire una foto con una grandezza di 500px putroppo utilizzando questo script la qualità mi risulta eccessivamente scadente, sapete indicarmi un modo per ridimensionere le immagine con un rapporto/peso qualita decente?

    Grazie

    Codice PHP:
    <%@ Page Language="C#" %>
    <%@ 
    import Namespace="System.Drawing" %>
    <%@ 
    import Namespace="System.Drawing.Imaging" %>
    <%@ 
    import Namespace="System.Text.RegularExpressions" %>
    <
    script runat="server">
        
    void Page_Load(Object senderEventArgs e) {

        
    int MaxWidth 500// Larghezza massima dopo il quale l'immagine viene ridimensionata
        
    int MaxHeight 0;  // Altezza massima dopo il quale l'immagine viene ridimensionata
        
    int ScaleFactor 0// Fattore di scala per la miniatura
        
    System.Drawing.Image oldImagenewImage;

        
            if(
    Request.QueryString["w"]!=null)
                if(
    Request.QueryString["w"].Length>0)
                    
    MaxWidth Convert.ToInt32(Request.QueryString["w"]);
            if(
    Request.QueryString["h"]!=null)
                if(
    Request.QueryString["h"].Length>0)
                    
    MaxHeight Convert.ToInt32(Request.QueryString["h"]);
        

            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 {
                        if(
    strFileName.IndexOf("http://")>=0){
                            
    System.Net.WebClient objWebClient = new System.Net.WebClient();            
                            
    oldImage System.Drawing.Image.FromStream(objWebClient.OpenRead(strFileName));
                        }else{
                            
    oldImage System.Drawing.Image.FromFileServer.MapPath(strFileName) );
                        }

                        if ( 
    oldImage.Width MaxWidth || oldImage.Height MaxHeight ) {
                        
                            
    // determina fattore di scala
                            
    if(oldImage.Width MaxWidth && MaxWidth>0){
                                
    ScaleFactor = ((MaxWidth*100)/oldImage.Width);
                            }else if(
    oldImage.Height MaxHeight){
                                
    ScaleFactor = ((MaxHeight*100)/oldImage.Height);
                            }
                            
                            
    // Immagine troppo grande, visualizzo la miniatura
                            
    newImage oldImage.GetThumbnailImage( (oldImage.Width*ScaleFactor/100), (oldImage.Height*ScaleFactor/100), nullIntPtr.Zero);
                            
    Response.ContentType "image/jpeg";
                            
    newImage.Save(Response.OutputStreamSystem.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.OutputStreamSystem.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> 

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    senti, ho provato. La qualità dell'immagine è indecente. Ho provato ad aggiustarlo, ma ho perso la pazienza. Quel codice è da rifare.
    Ti consiglio di cercare "imente" in questo forum. Dovrebbe esserci qualcosa di interessante.
    Ciao
    Pietro

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    http://forum.html.it/forum/showthrea...size+qualit%E0

    Qui c'è qualcosa di interessante. L'ho provato e funziona davvero bene.
    Pietro

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    :master: prova a sostituire l'istruzione
    newImage = oldImage.GetThumbnailImage( (oldImage.Width*ScaleFactor/100), (oldImage.Height*ScaleFactor/100), null, IntPtr.Zero);

    con
    newImage = new Bitmap(oldImage, (oldImage.Width*ScaleFactor/100), (oldImage.Height*ScaleFactor/100));
    Pietro

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2001
    Messaggi
    107
    Funziona alla grande! Grazie per l'aiuto.

    Sono debitore

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.