随笔 - 272  文章 - 7  评论 - 27  阅读 - 83万

生成缩略图方法

复制代码
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   NLazyo  阅读(659)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示