文谷首页 | 业界传真 | 网络技术 | 服务器 | 数据库 | 存储技术 | 系统安全 | 无线技术 | Cisco | .Net | Windows | Linux | Unix | Java
电子商务 | 网站工程 | 网页设计 | 平面设计 | 多媒体 | 编程语言 | Oracle | MSSQL | Photoshop | ASP | PHP | 实用技巧 | 进程查询 | 文谷论坛
 websphere   .net framework
您现在的位置: IT文谷 >> 开发平台 >> .net framework >> .NET Framework >> 文章正文
.net中用GDI+提高gif图片保存画质2006-7-15.net中用GDI+提高gif图片保存画质2006-7-15.net中用GDI+提高gif图片保存画质
.net中用GDI+提高gif图片保存画质2006-7-15.net中用GDI+提高gif图片保存画质2006-7-15.net中用GDI+提高gif图片保存画质
.net中用GDI+提高gif图片保存画质

.net中用GDI+提高gif图片保存画质2006-7-15.net中用GDI+提高gif图片保存画质2006-7-15.net中用GDI+提高gif图片保存画质
原文地址http://codebetter.com/blogs/brendan.tompkins/archive/2004/01/26/6103.aspx
//尊重他人劳动成果,转载请注明出处。

写程序的时候经常用到gdi+,他可以将一幅深色32 bpp图像保存为一个gif文件,过程也比较简单。并且在使用CreateThumnailImage方法保存这个gif图片之前,你还可以调整它的尺寸。
常用的代码:

System.Drawing.Bitmap b = new System.Drawing.Bitmap(“c:\\original_image.gif“);
System.Drawing.Image thmbnail = b.GetThumbnailImage(100,75,null,new IntPtr());
thmbnail.Save(“c:\\thumnail.gif“, System.Drawing.Imaging.ImageFormat.Gif);

以上代码可以完成gif文件的绘制和保存工作,但是很快你就会发现问题了:生成的thumnail.gif文件的画质远远低于我们的期望值。
效果图片:


如上图所示的低画质粒状图象还需要进行“颜色量子化”处理(palettization)。之所以会出现这种情况,是因为GDI+默认使用256色,而没有考虑图像自身实际的颜色。

之后,我们尝试着建立自己的“调色板”,可是结果更糟糕:)。一个好的“颜色量子化”算法应该考虑在两个像素颗粒之间填充与这两个像素颜色相近的过渡颜色,提供更多可视颜色空间。
这就是“Octree“ 算法。“Octree“ 算法允许我们插入自己的算法来量子化我们的图像。

这里有微软的两片文章,或许对我们有帮助:KB 319061  和 Optimizing Color Quantization for ASP.NET Images (微软Morgan Skinner著)。Morgan Skinner提供了很好的“Octree“ 算法代码,大家可以下载参考使用。

使用octreequantizer很方便:

system.drawing.bitmap b = new System.Drawing.Bitmap(“c:\\original_image.gif“);
System.Drawing.Image thmbnail = b.GetThumbnailImage(100,75,null,new IntPtr());
OctreeQuantizer quantizer = new OctreeQuantizer ( 255 , 8 ) ;
using ( Bitmap quantized = quantizer.Quantize ( thmbnail ) )
{
     quantized.Save(“c:\\thumnail.gif“, System.Drawing.Imaging.ImageFormat.Gif);
}

octreequantizer grayquantizer = new GrayscaleQuantizer ( ) ;
using ( Bitmap quantized = grayquantizer.Quantize ( thmbnail ) )
{
     quantized.Save(“c:\\thumnail.gif“, System.Drawing.Imaging.ImageFormat.Gif);
}

效果图片如下(是不是漂亮多了?):

 
 

点击这里下载项目代码,修改namespace就可以在你自己的项目中使用它了。

.net中用GDI+提高gif图片保存画质2006-7-15.net中用GDI+提高gif图片保存画质2006-7-15.net中用GDI+提高gif图片保存画质


  • 上一篇文章:

  • 下一篇文章:
  • 进入论坛讨论

    相关文章
    基于.NET的多线程编程入门
    Microsoft .NET 框架资源基础
    VS2005常用插件搜罗
    VS.NET:通过Web服务瞄准电子商务
    对象设计中创建VS使用
    安装/初始化/个性化DotNetNuke
    介绍dotnet原动力(DNN)
    GDI+编程10个基本技巧
    DTE .NET工程的自动化编译
    .Net中如何操作IIS的原理分析
    VS.NETRC5无法创建Add-IN工程
    .NET中带有口令加密的注册页面
    热门文章最新推荐

    版权与免责声明:
    ① 本网转载其他媒体稿件是为传播更多的信息,此类稿件不代表本网观点,版权归原作者所有,本网不承担此类稿件侵权行为的连带责任。
    ② 在本网BBS上发表言论者,文责自负。
    ③ 如您因版权等问题需要与本网联络,请在30日内联系 。
    .net中用GDI+提高gif图片保存画质2006-7-15.net中用GDI+提高gif图片保存画质2006-7-15.net中用GDI+提高gif图片保存画质
    .net中用GDI+提高gif图片保存画质2006-7-15.net中用GDI+提高gif图片保存画质2006-7-15.net中用GDI+提高gif图片保存画质

    .net framework专题
    人气排行
  • 此栏目下没有文章
  • 最近更新
    普通文章技术介绍 新数据网格简介
    普通文章.NET 开发人员该下载的十个必备
    普通文章深入剖析Asp.net资源文件
    普通文章通过事例学习.net的WebForms技
    普通文章ASP.NET Tips1---合并多个字段
    普通文章微软明年1月份出台.NET专业开发
    普通文章微软下月底前完成Vista大部分功
    普通文章揭开微软 .NET 认证考试的面纱
    普通文章Visual Studio:Microsoft开发工
    普通文章Visual Studio:Microsoft开发工
    全站热点       
    最新推荐
    关于文谷 | 联系文谷 | 免责声明 | 文谷社区
    Tel: 0577-65690019    E-mail: ichenjian@gmail.com    MSN:ichenjian@hotmail.com    QQ:2911194
    Copyright © 2004-2006 wengu.org 文谷 All Rights Reserved
    浙ICP备05000327号