生成缩略图方法

using System;

using System.Collections.Generic;

using System.Text;

namespace DataInput

{

    using System.IO;

    using System.Drawing;

    using System.Drawing.Imaging;

    using System.Windows.Forms;

    /// <summary>

    /// 图片处理类

    /// 1、生成缩略图片或按照比例改变图片的大小和画质

    /// 2、将生成的缩略图放到指定的目录下

    /// </summary>

    public class ImageClass

    {

        public Image ResourceImage;

        private int ImageWidth;

        private int ImageHeight;

        public string ErrMessage;

        /// <summary>

        /// 类的构造函数

        /// </summary>

        /// <param name="ImageFileName">图片文件的全路径名称</param>

        public ImageClass(string ImageFileName)

        {

            try

            {

                ResourceImage = Image.FromFile(ImageFileName);

                ErrMessage = "";

            }

            catch

            {

                ResourceImage = Image.FromFile(Application.StartupPath + "\\null.jpg");

            }

        }

        public bool ThumbnailCallback()

        {

            return false;

        }

        /// <summary>

        /// 生成缩略图重载方法1,返回缩略图的Image对象

        /// </summary>

        /// <param name="Width">缩略图的宽度</param>

        /// <param name="Height">缩略图的高度</param>

        /// <returns>缩略图的Image对象</returns>

        public Image GetReducedImage(int Width, int Height)

        {

            try

            {

                Image ReducedImage;

                Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback);

                ReducedImage = ResourceImage.GetThumbnailImage(Width, Height, callb, IntPtr.Zero);

                ResourceImage.Dispose();

                return ReducedImage;

            }

            catch (Exception e)

            {

                ErrMessage = e.Message;

                return null;

            }

        }

        /// <summary>

        /// 生成缩略图重载方法2,将缩略图文件保存到指定的路径

        /// </summary>

        /// <param name="Width">缩略图的宽度</param>

        /// <param name="Height">缩略图的高度</param>

        /// <param name="targetFilePath">缩略图保存的全文件名,(带路径),参数格式:D:Images ilename.jpg</param>

        /// <returns>成功返回true,否则返回false</returns>

        public bool GetReducedImage(int Width, int Height, string targetFilePath)

        {

            try

            {

                Image ReducedImage;

                Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback);

                ReducedImage = ResourceImage.GetThumbnailImage(Width, Height, callb, IntPtr.Zero);

                ReducedImage.Save(@targetFilePath, ImageFormat.Jpeg);

                ReducedImage.Dispose();

                return true;

            }

            catch (Exception e)

            {

                ErrMessage = e.Message;

                return false;

            }

        }

        /// <summary>

        /// 生成缩略图重载方法3,返回缩略图的Image对象

        /// </summary>

        /// <param name="Percent">缩略图的宽度百分比 如:需要百分之80,就填0.8</param> 

        /// <returns>缩略图的Image对象</returns>

        public Image GetReducedImage(double Percent)

        {

            try

            {

                Image ReducedImage;

                Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback);

                ImageWidth = Convert.ToInt32(ResourceImage.Width * Percent);

                ImageHeight = Convert.ToInt32(ResourceImage.Width * Percent);

                ReducedImage = ResourceImage.GetThumbnailImage(ImageWidth, ImageHeight, callb, IntPtr.Zero);

                return ReducedImage;

            }

            catch (Exception e)

            {

                ErrMessage = e.Message;

                return null;

            }

        }

        /// <summary>

        /// 生成缩略图重载方法4,返回缩略图的Image对象

        /// </summary>

        /// <param name="Percent">缩略图的宽度百分比 如:需要百分之80,就填0.8</param> 

        /// <param name="targetFilePath">缩略图保存的全文件名,(带路径),参数格式:D:Images ilename.jpg</param>

        /// <returns>成功返回true,否则返回false</returns>

        public bool GetReducedImage(double Percent, string targetFilePath)

        {

            try

            {

                Image ReducedImage;

                Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback);

                ImageWidth = Convert.ToInt32(ResourceImage.Width * Percent);

                ImageHeight = Convert.ToInt32(ResourceImage.Width * Percent);

                ReducedImage = ResourceImage.GetThumbnailImage(ImageWidth, ImageHeight, callb, IntPtr.Zero);

                ReducedImage.Save(@targetFilePath, ImageFormat.Jpeg);

                ReducedImage.Dispose();

                return true;

            }

            catch (Exception e)

            {

                ErrMessage = e.Message;

                return false;

            }

        }

    }

}

 

posted on 2013-09-05 11:16  NLazyo  阅读(656)  评论(0编辑  收藏  举报