前言:
眼前朋友们对“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 生成缩略图