.NET生成缩略图方法二则
创始人
2024-04-28 16:30:27
0次

.NET生成缩略图方法1. 使用Image的GetThumbnailImage 方法直接生成压缩图片,大概如此:

   file://设置 原图片 对象的 EncoderParameters 对象,设置清晰度

  1. ImageCodecInfo ici = GetCodecInfo((string)htmimes[mFileExtName]);     
  2.    EncoderParameters parameters = new EncoderParameters(1);     
  3.    parameters.Param[0] = new EncoderParameter(Encoder.Quality,lngDefinition);     
  4.     
  5.    System.Drawing.Image.GetThumbnailImageAbort myCallback =new      
  6.     
  7.    System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);     
  8.    System.Drawing.Image myThumbnail = image.GetThumbnailImage(intNewWidth, intNewHeight,      
  9.     
  10.  myCallback, IntPtr.Zero);     
  11.   myThumbnail.Save(txtNewPath, ici, parameters);    
  12. ImageCodecInfo ici = GetCodecInfo((string)htmimes[mFileExtName]);  
  13.    EncoderParameters parameters = new EncoderParameters(1);  
  14.    parameters.Param[0] = new EncoderParameter(Encoder.Quality,lngDefinition);  
  15.  
  16.    System.Drawing.Image.GetThumbnailImageAbort myCallback =new   
  17.  
  18.    System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);  
  19.    System.Drawing.Image myThumbnail = image.GetThumbnailImage(intNewWidth, intNewHeight,   
  20.  
  21.  myCallback, IntPtr.Zero);  
  22.   myThumbnail.Save(txtNewPath, ici, parameters);  
  23.    

.NET生成缩略图方法2. 使用Graphics 重新绘制图象

  1. ImageCodecInfo ici = GetCodecInfo((string)htmimes[mFileExtName]);     
  2.   EncoderParameters parameters = new EncoderParameters(1);     
  3.   parameters.Param[0] = new EncoderParameter(Encoder.Quality,lngDefinition);     
  4.     
  5.   Bitmap objNewBitMap = new Bitmap(intNewWidth, intNewHeight, PixelFormat.Format32bppArgb);     
  6.   //从指定的 Image 对象创建新 Graphics 对象     
  7.   Graphics objGraphics = Graphics.FromImage(objNewBitMap);     
  8.   //清除整个绘图面并以透明背景色填充     
  9.   objGraphics.Clear(Color.Transparent);     
  10.   //在指定位置并且按指定大小绘制 原图片 对象     
  11.   objGraphics.DrawImage(image, new Rectangle(0, 0, intNewWidth, intNewHeight));     
  12.   objNewBitMap.Save(txtNewPath + txtNewFileName+"."+mFileExtName, ici, parameters);    
  13.  ImageCodecInfo ici = GetCodecInfo((string)htmimes[mFileExtName]);  
  14.    EncoderParameters parameters = new EncoderParameters(1);  
  15.    parameters.Param[0] = new EncoderParameter(Encoder.Quality,lngDefinition);  
  16.  
  17.    Bitmap objNewBitMap = new Bitmap(intNewWidth, intNewHeight, PixelFormat.Format32bppArgb);  
  18.    //从指定的 Image 对象创建新 Graphics 对象  
  19.    Graphics objGraphics = Graphics.FromImage(objNewBitMap);  
  20.    //清除整个绘图面并以透明背景色填充  
  21.    objGraphics.Clear(Color.Transparent);  
  22.    //在指定位置并且按指定大小绘制 原图片 对象  
  23.    objGraphics.DrawImage(image, new Rectangle(0, 0, intNewWidth, intNewHeight));  
  24.    objNewBitMap.Save(txtNewPath + txtNewFileName+"."+mFileExtName, ici, parameters);  
  25.  

注意lngDefinition是调整清晰度的LONG型参数,一般50-90 就很清晰了。

.NET生成缩略图的2种效果,(相同宽度高度)清晰度上Graphics较好,图片Graphics绘制的也比较小,小1/3左右。

【编辑推荐】

  1. ASP.NET和SQL Server数据库图片存储的实现
  2. ASP.NET数据库图片存储到Sql2000中
  3. ASP.NET数据库图片上传与读取的实现
  4. ASP.NET(VB)应用之图片增加水印文字浅析
  5. 浅谈.NET图片快速处理的几种方法

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
只需三步,让你掌握阿尔法路由器... 请参照以下阿尔法路由器设置方法,通过浏览器进入及设置宽带路由器。经过这三个步骤的设置,基本上能够熟悉...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...