Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080

    Problema con ridimensionamento immagine

    Ho questo script per ridimensionare un'immagine

    codice:
       private void ResizeAndSave(Stream imgStr, int Width, int Height, string FileName)
        {
            EncoderParameters eps = new EncoderParameters(1);
            long compression = 100;
            eps.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, compression);
            ImageCodecInfo ici = GetEncoderInfo("image/jpeg");
            System.Drawing.Image bmpStream2 = System.Drawing.Image.FromStream(imgStr);
            Bitmap img = new Bitmap(bmpStream2, new Size(Width, Height));
            img.Save(FileName, ici, eps);  
        }
    
        private ImageCodecInfo GetEncoderInfo(String mimeType)
        {
            int j;
            ImageCodecInfo[] encoders;
            encoders = ImageCodecInfo.GetImageEncoders();
            for (j = 0; j < encoders.Length; ++j)
            {
                if (encoders[j].MimeType == mimeType)
                    return encoders[j];
            }
            return null;
        }
    Modificando il long compression da 100 a 10 ovviamente l'immagine uplodata cambia di qualità però anche se tengo la long a 80/100 l'immagine una volta ridimensionata mi risulta sempre più sgranata rispetto ad un ridimensionamento con Photoshop.

  2. #2
    Utente di HTML.it L'avatar di Franz78
    Registrato dal
    Sep 2004
    Messaggi
    730
    Ciao

    ank'io utilizzo queste classi x ridimensionare le immagini, ma proprio grosse differenze non le vedo, certo adobe utilizzerà un altro tipo di codice (sicuramente migliore) per ridimensionare le immagini.

    Che tipo di immagine passi ? jpg?
    L'unica cosa che mi viene in mente è ke potresti controllare l'estensione del file è diversificare il caricamento del GetEncoderInfo.


    Ciao!

  3. #3
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Si JPG.
    La cosa che ho notato è che commentando l'antialiasing la stessa immagine risulta identica... come se on prendesse l'antialias. Mi è sorto il dubbio che non funzi il codice.

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    purtroppo non è uguale a photoshop, ma vedi se va

    codice:
        private void ResizeAndSave(Stream imgStr, int Width, int Height, string FileName)
        {
            EncoderParameters eps = new EncoderParameters(1);
            long compression = 100;
            eps.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, compression);
            ImageCodecInfo ici = GetEncoderInfo("image/jpeg");
            System.Drawing.Image bmpStream2 = System.Drawing.Image.FromStream(imgStr);
    
            Bitmap img = null;
            Graphics gr = null;
    
            img = new System.Drawing.Bitmap(Width, Height);
            img.SetResolution(bmpStream2.HorizontalResolution, bmpStream2.VerticalResolution);
            gr = Graphics.FromImage(img);
            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(bmpStream2, 0, 0, Width, Height);
            gr.Dispose();
    
            img.Save(FileName, ici, eps);
        }
    Pietro

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.