webdn
 
  首页     免费截图     VIP会员区     广告Banner     技术文档     网站模板  
网站截图,网站每日新 !
虚拟主机 域名注册

首页 >> WebDN 文档 >> 网络编程 >> ASP.net教程>> 第38页 >> .net在生成压缩图片时的2种方法

 

.net在生成压缩图片时的2种方法

【摘 要】 .NET搞了一个小小的图片上传的工具图片在上传时要根据图片大小来生成对应的各种大小的小图,比如传760PX的图片,则分别要多生成300,100宽度的图片。于是查看了GDI的功能。

  我用.NET搞了一个小小的图片上传的工具图片在上传时要根据图片大小来生成对应的各种大小的小图,比如传760PX的图片,则分别要多生成300,100宽度的图片。于是查看了GDI的功能,~~ 平时用得不多,生疏啊。。

  实现方法有2个方式:

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

   file://设置 原图片 对象的 EncoderParameters 对象,设置清晰度
   ImageCodecInfo ici = GetCodecInfo((string)htmimes[mFileExtName]);
   EncoderParameters parameters = new EncoderParameters(1);
   parameters.Param[0] = new EncoderParameter(Encoder.Quality,lngDefinition);

   System.Drawing.Image.GetThumbnailImageAbort myCallback =new

System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);
   System.Drawing.Image myThumbnail = image.GetThumbnailImage(intNewWidth, intNewHeight,

myCallback, IntPtr.Zero);
  myThumbnail.Save(txtNewPath, ici, parameters);

  2.使用Graphics 重新绘制图象

   ImageCodecInfo ici = GetCodecInfo((string)htmimes[mFileExtName]);
   EncoderParameters parameters = new EncoderParameters(1);
   parameters.Param[0] = new EncoderParameter(Encoder.Quality,lngDefinition);

   Bitmap objNewBitMap = new Bitmap(intNewWidth, intNewHeight, PixelFormat.Format32bppArgb);
   //从指定的 Image 对象创建新 Graphics 对象
   Graphics objGraphics = Graphics.FromImage(objNewBitMap);
   //清除整个绘图面并以透明背景色填充
   objGraphics.Clear(Color.Transparent);
   //在指定位置并且按指定大小绘制 原图片 对象
   objGraphics.DrawImage(image, new Rectangle(0, 0, intNewWidth, intNewHeight));
   objNewBitMap.Save(txtNewPath + txtNewFileName+"."+mFileExtName, ici, parameters);

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

  因为在使用的时候先是用第一种方法,结果发现把清晰度调得再高都很模糊,后来用第2种方法,发现清晰度为40的时候也很清晰。

  小结下吧:

  1.2种效果,在清晰度上是Graphics 胜出

  2.在生成同样宽度,同样清晰度前提下,图片Graphics绘制的也比较小,小1/3左右。

  如此看来 MS的Image的压缩GetThumbnailImage 方法 应该不适合在压缩图片上,那适合在什么地方使用呢,希望熟悉的人告诉下哦



  | 
点击这里给我发消息 | 关于WebDN  |  站点地图  |  联系我们  |  WebDN 会员  |  支付方式  |  友情链接  |  隐私政策
© 2004-2008 WebDN.com 版权所有. 沪ICP备05040479号