Home  >  Article  >  php教程  >  C# 生成各种格式各种大小的图片类

C# 生成各种格式各种大小的图片类

WBOY
WBOYOriginal
2016-06-06 20:01:301249browse

using System; using System.Collections.Generic; using System.Text; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; namespace Chen { public class Thumbnail { #region 生成缩略图 ///summary /// 生成缩略图 /

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;

namespace Chen
{
    public class Thumbnail
    {
        #region  生成缩略图
        ///


        /// 生成缩略图
        ///

        /// 源图路径(物理路径)
        /// 缩略图路径(物理路径)
        /// 缩略图宽度
        /// 缩略图高度
        /// 生成缩略图的方式  
        /// 生成缩略图的类型
        public void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode, out string outthumbnailPath, string thumbnailType)
        {
            Image originalImage = Image.FromFile(originalImagePath);

            int towidth = width;
            int toheight = height;

            int x = 0;
            int y = 0;
            int ow = originalImage.Width;
            int oh = originalImage.Height;

            switch (mode)
            {
                case "HW"://指定高宽缩放(可能变形)               
                    break;
                case "W"://指定宽,高按比例                   
                    toheight = originalImage.Height * width / originalImage.Width;
                    break;
                case "H"://指定高,宽按比例
                    towidth = originalImage.Width * height / originalImage.Height;
                    break;
                case "Cut"://指定高宽裁减(不变形)               
                    if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
                    {
                        oh = originalImage.Height;
                        ow = originalImage.Height * towidth / toheight;
                        y = 0;
                        x = (originalImage.Width - ow) / 2;
                    }
                    else
                    {
                        ow = originalImage.Width;
                        oh = originalImage.Width * height / towidth;
                        x = 0;
                        y = (originalImage.Height - oh) / 2;
                    }
                    break;
                default:
                    break;
            }

            //新建一个bmp图片
            Image bitmap = new Bitmap(towidth, toheight);

            //新建一个画板
            Graphics g = Graphics.FromImage(bitmap);

            //设置高质量插值法
            g.InterpolationMode = InterpolationMode.High;

            //设置高质量,低速度呈现平滑程度
            g.SmoothingMode = SmoothingMode.HighQuality;

            //清空画布并以透明背景色填充
            g.Clear(Color.Transparent);

            //在指定位置并且按指定大小绘制原图片的指定部分
            g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight), new Rectangle(x, y, ow, oh), GraphicsUnit.Pixel);

            try
            {
                //以各种格式保存缩略图
                switch (thumbnailType)
                {
                    case "ico":
                        bitmap.Save(thumbnailPath, ImageFormat.Icon);
                        break;
                    case "jpg":
                        bitmap.Save(thumbnailPath, ImageFormat.Jpeg);
                        break;
                    case "bmp":
                        bitmap.Save(thumbnailPath, ImageFormat.Bmp);
                        break;
                    case "gif":
                        bitmap.Save(thumbnailPath, ImageFormat.Gif);
                        break;
                    default:
                        bitmap.Save(thumbnailPath, ImageFormat.Jpeg);
                        break;
                }
                outthumbnailPath = thumbnailPath;
            }
            catch (System.Exception e)
            {
                throw e;
            }
            finally
            {
                originalImage.Dispose();
                bitmap.Dispose();
                g.Dispose();
            }
        }
    }
        #endregion
}

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn