龙空技术网

生成图片缩略图-C#学习进阶

天道格律随笔 219

前言:

眼前朋友们对“js 生成缩略图”大概比较着重,各位老铁们都需要剖析一些“js 生成缩略图”的相关资讯。那么小编同时在网上网罗了一些有关“js 生成缩略图””的相关资讯,希望朋友们能喜欢,小伙伴们快快来学习一下吧!

实例说明

如果图片过多,只有一张张的打开图片才能知道图片的内容,显然这样浏览起来非常不便。Windows系统在浏览图片时提供了缩略图的功能,这样大大的方便了浏览者了解每张图片的内容,本实例实现了与Windows系统缩略图相同的功能,实例运行结果如图:

技术要点

在制作生成图片缩略图过程中,主要使用了Image类的GetThumbnailImage方法,此方法主要用于返回指定Image的缩略图,语法格式如下:

public Image GetThumbnailImage(     int thumbWidth,int thumbHeight,     Image.GetThumbnailImageAbort callback,IntPtr callbackData)

thumbWidth:请求的缩略图的宽度(以像素为单位)。

thumbHeight:请求的缩略图的高度(以像素为单位)。

callback:一个Image.GetThumbnailImageAbort 委托。

callbackData:必须为Zero。

返回值:表示缩略图的Image。

例如,本实例中通过Image类的GetThumbnailImage方法生成图片的缩略图,代码如下:

开发步骤

(1)新建一个Windows应用程序,将其命名为ImgMicroimage,默认窗体为Form1。

(2)Form1窗体主要用到的控件及说明如表1所示。

Form1窗体主要用到的控件及说明

控件名称

属性设置

说 明

toolStrip1

用于实现添加文件按钮

panel1

Dock属性设置为Fill

显示生成的缩略图

statusStrip1

显示状态信息

imageList1

ColorDepth设置为Depth32Bit

存储生成的缩略图

folderBrowserDialog1

选择图片目录

(3)主要程序代码。

Form1窗体的后台代码中,自定义了一个GetReducedImage方法,用于获取指定图片的缩略图。该方法首先根据参数Percent或者原图的缩略图比例,然后通过GetThumbnailImage方法生成缩略图,最后通过Save方法将生成的缩略图保存到指定的目录下,代码如下:

public bool GetReducedImage(double Percent, string targetFilePath){    try    {        Bitmap bt = new Bitmap(120,120);                                                 //创建Bitmap实例        Graphics g = Graphics.FromImage(bt);                                          //创建Graphics实例        g.Clear(Color.White);                                                      //设置画布背景颜色为白色        Image ReducedImage;                                                    //缩略图        Image.GetThumbnailImageAbort callb = new Image.GetThumbnailImageAbort(ThumbnailCallback);        ImageWidth = Convert.ToInt32(ResourceImage.Width * Percent);           //设置宽度        ImageHeight = Convert.ToInt32(ResourceImage.Height * Percent);   //设置高度           //获取所谓图        ReducedImage = ResourceImage.GetThumbnailImage(ImageWidth, ImageHeight, callb, IntPtr.Zero);        if (ImageWidth > ImageHeight)                                               //如果原图宽度大于高度        {                //缩放图片            g.DrawImage(ReducedImage,0,(int)(120-ImageHeight)/2,ImageWidth,ImageHeight);        }        else        {            g.DrawImage(ReducedImage, (int)(120 - ImageWidth)/2, 0, ImageWidth, ImageHeight);        }        g.DrawRectangle(new Pen(Color.Gray), 0, 0,119,119);                    //绘制缩略图的边框        bt.Save(@targetFilePath, ImageFormat.Jpeg);                                 //保存缩略图        bt.Dispose();                                                                  //释放对象        ReducedImage.Dispose();                                               //释放对象        return true;    }    catch (Exception e)    {        ErrMessage = e.Message;        return false;    }}

注意:在开发过程中,将生成的缩略图添加到ListView控件时,会出现非常严重的闪烁现象,影响了整体的浏览效果。所以,程序中重写ListView控件,消除了闪烁。

标签: #js 生成缩略图