產生高品質小空間的縮圖C#代碼

來源:互聯網
上載者:User
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Drawing;using System.IO; namespace ConsoleApplication3_ThumbnailImg{    class Program    {        const int HEIGHT = 190;        const int WIDTH = 190;        static void Main(string[] args)        {            string srcImgPath = @"G:\photoes\20060725\Picture 057.jpg";            string targetFolder = @"E:\Diary\Test\thumbnail";             SetThumbnail_1(srcImgPath, targetFolder);            SetThumbnail_2(srcImgPath, targetFolder);            SetThumbnail_3(srcImgPath, targetFolder);             Console.Read();        }         static void SetThumbnail_1(string srcImgPath, string targetFolder)        {            using (Bitmap source = new Bitmap(srcImgPath))            {                // return the source image if it's smaller than the designated thumbnail                   int wi, hi;                wi = WIDTH;                hi = HEIGHT;                 // maintain the aspect ratio despite the thumbnail size parameters                   if (source.Width > source.Height)                {                    wi = WIDTH;                    hi = (int)(source.Height * ((decimal)WIDTH / source.Width));                }                else                {                    hi = HEIGHT;                    wi = (int)(source.Width * ((decimal)HEIGHT / source.Height));                }                 using (Image thumb = source.GetThumbnailImage(wi, hi, null, IntPtr.Zero))                {                    string targetPath = Path.Combine(targetFolder, "th_1.jpg");                    thumb.Save(targetPath);                }            }        }         static void SetThumbnail_2(string srcImgPath, string targetFolder)        {            using (Bitmap source = new Bitmap(srcImgPath))            {                // return the source image if it's smaller than the designated thumbnail                   int wi, hi;                wi = WIDTH;                hi = HEIGHT;                 // maintain the aspect ratio despite the thumbnail size parameters                   if (source.Width > source.Height)                {                    wi = WIDTH;                    hi = (int)(source.Height * ((decimal)WIDTH / source.Width));                }                else                {                    hi = HEIGHT;                    wi = (int)(source.Width * ((decimal)HEIGHT / source.Height));                }                 // original code that creates lousy thumbnails                   // System.Drawing.Image ret = source.GetThumbnailImage(wi,hi,null,IntPtr.Zero);                   using (System.Drawing.Bitmap thumb = new Bitmap(wi, hi))                {                    using (Graphics g = Graphics.FromImage(thumb))                    {                        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;                        g.FillRectangle(Brushes.White, 0, 0, wi, hi);                        g.DrawImage(source, 0, 0, wi, hi);                    }                    string targetPath = Path.Combine(targetFolder, "th_2.jpg");                    thumb.Save(targetPath);                }             }        }         static void SetThumbnail_3(string srcImgPath, string targetFolder)        {            //Configure JPEG Compression Engine               System.Drawing.Imaging.EncoderParameters encoderParams = new System.Drawing.Imaging.EncoderParameters();            long[] quality = new long[1];            quality[0] = 75;            System.Drawing.Imaging.EncoderParameter encoderParam = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);            encoderParams.Param[0] = encoderParam;             System.Drawing.Imaging.ImageCodecInfo[] arrayICI = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders();            System.Drawing.Imaging.ImageCodecInfo jpegICI = null;            for (int x = 0; x < arrayICI.Length; x++)            {                if (arrayICI[x].FormatDescription.Equals("JPEG"))                {                    jpegICI = arrayICI[x];                    break;                }            }             using (Bitmap source = new Bitmap(srcImgPath))            {                int wi, hi;                wi = WIDTH;                hi = HEIGHT;                 // maintain the aspect ratio despite the thumbnail size parameters                   if (source.Width > source.Height)                {                    wi = WIDTH;                    hi = (int)(source.Height * ((decimal)WIDTH / source.Width));                }                else                {                    hi = HEIGHT;                    wi = (int)(source.Width * ((decimal)HEIGHT / source.Height));                }                 // original code that creates lousy thumbnails                   // System.Drawing.Image ret = source.GetThumbnailImage(wi,hi,null,IntPtr.Zero);                   using (System.Drawing.Bitmap thumb = new Bitmap(wi, hi))                {                    using (Graphics g = Graphics.FromImage(thumb))                    {                        g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;                        g.FillRectangle(Brushes.White, 0, 0, wi, hi);                        g.DrawImage(source, 0, 0, wi, hi);                    }                    string targetPath = Path.Combine(targetFolder, "th_3.jpg");                    thumb.Save(targetPath, jpegICI, encoderParams);                }             }         }    }}
  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.