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>