Ajude a Asast
Patrocinadores
Últimos assuntos
» Novo site para desportistas / New site for athletes
Sex Mar 17, 2017 8:31 am por Admin

» List files by date
Sex Mar 17, 2017 8:24 am por Admin

» RegExp - Add XXX to the begin of a String
Sex Nov 18, 2016 1:44 am por Admin

» RegExp - Add XXX to the end of a String
Sex Nov 18, 2016 1:38 am por Admin

» Great book about DOD programming
Sex Nov 11, 2016 6:59 am por Admin

» MESOS (Apache)
Qui Set 29, 2016 1:51 am por Admin

» Site de aluguer entre particulares
Sex Jul 01, 2016 3:01 am por Admin

» Noite das maravilhas - Nuit des merveilles
Sex Jul 01, 2016 2:54 am por Admin

» Site para procura de emprego no Luxemburgo
Qui Jun 30, 2016 7:13 am por Admin

AdSense
Contributo

Método para reduzir uma imagem

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Método para reduzir uma imagem

Mensagem  Admin em Qua Dez 14, 2011 8:16 am

O método seguinte pode ser usado para reduzir uma imagem, recebendo o nome do ficheiro da imagem e a largura (em mm) com que queremos que fique.
Se a imagem for do tipo JPG, ela é substituída. Senão, uma nova imagem com o novo tamanho é criada.

Aqui fica:

Código:

        ...
        private double MilimeterPerInch = 25.4F;
        ...
        /// <summary>
        /// Method used to rezsize a given image
        /// </summary>
        /// <param name="file">The file name</param>
        /// <param name="width">The new image width in milimeters</param>
        /// <param name="height">The new image heigth in milimeters</param>
        /// <returns></returns>
        private string ResizeImage(string file, int widthMM)
        {
            string result = null;
            try
            {
                if (String.IsNullOrEmpty(file))
                {
                    Debug.WriteLine("File name not defined.");
                    return result;
                }

                if (widthMM <= 0)
                {
                    Debug.WriteLine("New width not defined.");
                    return result;
                }

                System.Drawing.Image FullsizeImage = System.Drawing.Image.FromFile(file);
                System.Drawing.Image NewImage = null;
                if (widthMM >= PixelsToMM(FullsizeImage.Width))
                {
                    if (!(file.ToLower().EndsWith("jpg") || file.ToLower().EndsWith("jpeg")))
                    {
                        NewImage = FullsizeImage.GetThumbnailImage(FullsizeImage.Width, FullsizeImage.Height, null, IntPtr.Zero);
                        result = file.Substring(0, file.Length - 3);
                        result += "jpg";
                    }
                }
                else
                {
                    Graphics g = this.CreateGraphics();
                    int width = (int)(g.DpiX / MilimeterPerInch) * widthMM;
                    int heigth = (int)(width * FullsizeImage.Height / FullsizeImage.Width);

                    NewImage = FullsizeImage.GetThumbnailImage(width, heigth, null, IntPtr.Zero);

                    if (!(file.ToLower().EndsWith("jpg") || file.ToLower().EndsWith("jpeg")))
                    {
                        result = file.Substring(0, file.Length - 3);
                        result += "jpg";
                    }
                    else
                    {
                        result = file;
                    }
                }

                // Clear handle to original file so that we can overwrite
                FullsizeImage.Dispose();

                if(result!=null)
                    NewImage.Save(result);
            }
            catch (Exception e)
            {
                Debug.WriteLine(e);
                return null;
            }
            return result;
        }

    /// <summary>
        /// Method used to convert pixels to Milimeters
        /// </summary>
        /// <param name="pixels">The number of pixels</param>
        /// <returns>double</returns>
        public double PixelsToMM(int pixels)
        {
            Graphics g = this.CreateGraphics();
            return (double) pixels / g.DpiX * MilimeterPerInch;
        }
        ...
avatar
Admin
Admin

Mensagens : 596
Data de inscrição : 21/01/2008
Idade : 40

Ver perfil do usuário http://forum-informatico.forumeiros.com

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum