Visualizzazione dei risultati da 1 a 4 su 4

Discussione: ...ancora thumb

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    347

    ...ancora thumb

    so che più e più volte hanno fatto questa domanda, ma ho fatto moltissime prove e non sono riuscito nel mio intento.

    ho il famosissimo script per il ridimensionamento delle immagini, poi ho trovato l'altro famosissimo script per ritagliare le immagini ed ho provato ad integrare le funzioni del ritaglio tra le funzioni del ridimensionamento.

    ...e non funziona.

    sarei molto contanto se mi aiutaste...
    Codice PHP:
    <%@ Page Language="C#"  Debug="true"%>
    <%@ 
    import Namespace="System.IO" %>
    <%@ 
    import Namespace="System.Drawing" %>
    <%@ 
    import Namespace="System.Drawing.Imaging" %>
    <
    script runat="server">

    /*  WBRESIZE 0.2 
        developer by imente 15/10/2006

    parametri (da querystring):
        f = nome del file originale
        s = percentuale di ridimensionamento (es: 20)
        w = larghezza fissata (la altezza viene calcolata di conseguenza per mantenere le dimensioni)
        h = altezza fissata (la larghezza viene calcolata di conseguenza per mantenere le dimensioni)
        *** si può indicare S oppure W oppure H. se si indica S, W e H vengono ignorati.
        *** se si indica sia W che H viene forzato il ridimensionamento e non verranno rispettate le proporzioni
        
        c = compressione jpeg (valori da 1 a 100)
        *** se non impostata la compressione viene impostata a 75
        
        t = cartella dove salvare la thumb
        n = nome della thumb (se non indicato genera thumb.jpg)
        r = pagina a cui redirigersi dopo aver effettuato il resize (se non indicato si redirige alla thumb)
        *** se si indica T la thumb viene salvata
        *** se non si indica T la thumb viene solo visualizzata (on the fly)
    */

    // path dove sono posizionate le immagini di errore
    string errorImagePath "";


    void Page_Load(Object senderEventArgs e) {
        
        
    // parametri
        
    string fileName = (Request.QueryString["img"]==null)?"":"/public/"+Request.QueryString["img"]; // nome del file originale
        
    string folder = (Request.QueryString["t"]==null)?"":Request.QueryString["t"]; // cartella dove salvare la thumb
        
    string newName = (Request.QueryString["n"]==null)?"thumb.jpg":Request.QueryString["n"]; // nuovo nome del file
        
    string redirect = (Request.QueryString["r"]==null)?(folder+"/"+newName):Request.QueryString["r"]; // redirezione dopo save
        
    double requestedWidth = (Request.QueryString["w"]==null)?0:Convert.ToDouble(Request.QueryString["w"]); // larghezza impostata
        
    double requestedHeight = (Request.QueryString["h"]==null)?0:Convert.ToDouble(Request.QueryString["h"]); // altezza impostata
        
    int scaleFactor = (Request.QueryString["s"]==null)?0:Convert.ToInt32(Request.QueryString["s"]); // fattore di scalo per la miniatura
        
    int compression = (Request.QueryString["c"]==null)?0:Convert.ToInt32(Request.QueryString["c"]); // compressione (0-100)
        
        // variabili di servizio
        
    int originalWidth 0;
        
    int originalHeight 0;
        
    int thumbWidth 0;
        
    int thumbHeight 0;
        
        if ( 
    fileName.Trim().Length>) {
            try {
            
                
    //carica l'immagine e ne recupera le dimensioni
                
    System.Drawing.Image image;
                
    image System.Drawing.Image.FromFileServer.MapPath(fileName) );
                
    originalWidth image.Width;
                
    originalHeight image.Height;
                
    image.Dispose();
                
    image null;
                
                
    //se una dimensione è più grande dell'immagine e l'altra no, 
                //la diminuisce fino a renderla pari all'immagine
                
    if ( originalWidth requestedWidth && originalHeight requestedHeight requestedHeight originalHeight
                if ( 
    originalWidth requestedWidth && originalHeight requestedHeight requestedWidth originalWidth;   
                
                if ( 
    originalWidth >= requestedWidth && originalHeight >= requestedHeight && scaleFactor >= && scaleFactor 100 ) {
                    
    //l'immagine è da ridimensionare: calcola le dimensioni della miniatura
                    
    if ( scaleFactor == 0) {
                        if ( 
    requestedWidth == && requestedHeight != 0) {
                            
    // forzata requestedHeight
                            
    thumbWidth Convert.ToInt32(Math.Ceiling(requestedHeight*originalWidth/originalHeight));
                            
    thumbHeight Convert.ToInt32(requestedHeight);
                        } else if (
    requestedHeight == && requestedWidth != 0) {
                            
    // forzata requestedWidth
                            
    thumbWidth Convert.ToInt32(requestedWidth);
                            
    thumbHeight Convert.ToInt32(Math.Ceiling(requestedWidth*originalHeight/originalWidth));
                        } else if (
    requestedHeight != && requestedWidth != 0) {
                            
    // forzata sia requestedWidth che requestedHeight
                            
    thumbWidth Convert.ToInt32(requestedWidth);
                            
    thumbHeight Convert.ToInt32(requestedHeight);
                        } else {
                            
    // ERR: nessun parametro impostato
                            
    error(0);
                            return;
                        }
                    } else {
                        
    // scalata: percentuale delle dimensioni
                        
    thumbWidth = (originalWidth*scaleFactor/100);
                        
    thumbHeight = (originalHeight*scaleFactor/100);
                    }
                } else {
                    
    // sovradimensionamento (si impostano le nuove dimensioni a 0 per evitare il ridimensionamento)
                    
    thumbWidth 0;
                    
    thumbHeight 0;
                }
                
                
    // esegue le operazioni di output
                
    if ( folder != "" ) {
                    
    // output su file
                    
    Resize(fileName,thumbWidth,thumbHeight,folder+"\\"+newName,compression);
                    
    // redirezione
                    
    Response.Redirect(redirect);
                } else {
                    
    // output diretto (come content-type="image/jpeg")
                    
    Resize(fileName,thumbWidth,thumbHeight,"",compression);
                }
                
            } catch (
    System.IO.FileNotFoundException ex) {
                
    // ERR: immagine inesistente
                
    error(2);
                return;
            } catch (
    Exception ex) {
                
    Response.Write(ex.Message);
            }
        } else {
            
    // ERR: nessuna immagine indicata
            
    error(1);
            return;
        }
    }

    private 
    void error(int error) {
        
    // errore: visualizza una immagine di errore
        
    System.Drawing.Image errImage;
        
    errImage System.Drawing.Image.FromFileServer.MapPath(errorImagePath+"wbresize_err"+error+".gif") );
        
    Response.ContentType "image/gif";
        
    errImage.Save(Response.OutputStreamSystem.Drawing.Imaging.ImageFormat.Gif);
        
    errImage.Dispose();
        
    errImage null;
    }

    //
    //
    //queste sono le funzioni che servono per il ritaglio(almno penso)
    //
    //
    public void ImgClip(ref Bitmap bmpSourceRectangle clip)
        {
            
    Bitmap bmp = new Bitmap(clip.Widthclip.HeightbmpSource.PixelFormat);
            
    bmp.SetResolution(bmpSource.HorizontalResolutionbmpSource.VerticalResolution);
            
    bmp.Tag bmpSource.Tag;
            
    Graphics gr Graphics.FromImage(bmp);
            
    gr.Clear(Color.White);
            
            
    //'imposto lavoro alta qualità
            
    gr.InterpolationMode System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
            
    gr.SmoothingMode System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            
    gr.PixelOffsetMode System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
            
    gr.CompositingQuality System.Drawing.Drawing2D.CompositingQuality.HighQuality;


            
    gr.DrawImage(bmpSource, new Rectangle(00clip.Widthclip.Height), clipGraphicsUnit.Pixel);
            
    gr.Dispose();
            
    bmpSource.Dispose();
            
    bmpSource bmp;
        
        }
    public 
    void ImgClipCentra(ref Bitmap bmpRectangle clipint contenitoreWint contenitoreHColor coloreSottofondo)
        {
            
    //taglio l'immagine
            
    ImgClip(ref bmpclip);

            
    //creo il riquadro bianco
            
    Bitmap bmp1 = new Bitmap(contenitoreWcontenitoreHbmp.PixelFormat);
            
    bmp1.SetResolution(bmp.HorizontalResolutionbmp.VerticalResolution);
            
    bmp1.Tag bmp.Tag;
            
    Graphics gr Graphics.FromImage(bmp1);
            
    gr.Clear(coloreSottofondo);

            
    //imposto lavoro alta qualità
            
    gr.InterpolationMode System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
            
    gr.SmoothingMode System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            
    gr.PixelOffsetMode System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
            
    gr.CompositingQuality System.Drawing.Drawing2D.CompositingQuality.HighQuality;

            
    gr.DrawImage(bmp, new Rectangle((int)((contenitoreW bmp.Width) / 2), (int)((contenitoreH bmp.Height) / 2), bmp.Widthbmp.Height), new Rectangle(00bmp.Widthbmp.Height), GraphicsUnit.Pixel);

            
    bmp.Dispose();
            
    gr.Dispose();
            
    bmp bmp1;
        
        }      

        public 
    void ImgClipCentra(ref Bitmap bmpRectangle clipint contenitoreWint contenitoreH)
        {
            
    ImgClipCentra(ref bmpclipcontenitoreWcontenitoreHColor.White);
        }

    //
    //
    //fine delle funzioni che ho copiato
    //
    //

    private void Resize(string FileNameint requestedWidthint requestedHeightstring NewFileNameint compression) {

        
    FileStream file=new FileStream(Server.MapPath(FileName),FileMode.Open);
        
    NewFileName Server.MapPath(NewFileName);

        
    //creo il bitmap dallo stream
        
    System.Drawing.Image bmpStream=System.Drawing.Image.FromStream(file);
        
        
    //creo un nuovo bitmap
        
    Bitmap image;
        
        
    //controllo valori in entrata
        
    if (compression <= 0compression 100;
        
        
    //se indicato lo ridimensiono
        
    if (requestedWidth == || requestedHeight == 0image=new Bitmap(bmpStream);
        else 
    image=new Bitmap(bmpStream,new Size(requestedWidth,requestedHeight));
        
        
    ImageCodecInfo jpegCodecInfo;
        
    System.Drawing.Imaging.Encoder encoder;
        
    EncoderParameter encoderParameter;
        
    EncoderParameters encoderParameters;
        
    jpegCodecInfo GetEncoderInfo("image/jpeg");
        
    encoder System.Drawing.Imaging.Encoder.Quality;
        
    encoderParameters = new EncoderParameters(1);
        
    encoderParameter = new EncoderParameter(encodercompression);
        
    encoderParameters.Param[0] = encoderParameter;
        if (
    NewFileName == "") {
            
    // output su file
            
    image.Save(NewFileNamejpegCodecInfoencoderParameters);
        } else {
            
    // output diretto
            
    Response.ContentType "image/jpeg";
            
    //
            //
            //QUI PROVO A RITAGLIARE, MA NON FUNZIONA!!! LO SCRIPT VA IN ERRORE...
            //
            //
            
    ImgClipCentra(fileName, New Rectangle(50100280180));
            
    image.Save(Response.OutputStreamjpegCodecInfoencoderParameters);
        }
        
        
    image.Dispose();
        
    image null;
        
        
    file.Close();

    }

    private 
    ImageCodecInfo GetEncoderInfo(string mimeType) {
       
    ImageCodecInfo[] encoders ImageCodecInfo.GetImageEncoders();
       for (
    int j 0jencoders.Lengthj++) {
          if (
    encoders[j].MimeType == mimeType) {
               return 
    encoders[j];
          }
       }
       return 
    null;
    }
    </script> 
    attendo con ansia...

  2. #2
    In che senso non funziona ?

    Non compila ?

    Hai errori ?

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    io ho la classe completa in c# e vb.net. Se serve la mando, ma è lunga, 4-5 post :master:
    Pietro

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    347
    se mandi il codice mi fai un gran favore...grazie

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.