使用OctreeQuantizer提高gdi+绘图质量

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

.net中gdi+绘制的图形质量很少,原因是gdi+使用的是256色的。

为了提高绘制图片的质量,可以使用是“Octree“ 算法。“Octree“ 算法允许我们插入自己的算法来量子化我们的图像。

一个好的“颜色量子化”算法“应该考虑在两个像素颗粒之间填充与这两个像素颜色相近的过渡颜色,提供更多可视颜色空间。

Morgan Skinner提供了很好的“Octree“ 算法代码,大家可以下载参考使用。

使用OctreeQuantizer很方便:

public byte[] Draw()

{

System.Drawing.Bitmap image = new System.Drawing.Bitmap(this.imageWidth, this.imageHeight);

Graphics g = Graphics.FromImage(image);

g.SmoothingMode = SmoothingMode.HighQuality;

g.InterpolationMode = InterpolationMode.HighQualityBicubic;

//绘制图片

this.RenerImage(g);

System.IO.MemoryStream ms = new System.IO.MemoryStream();

//使用octreequantizer清晰化图片

OctreeQuantizer oqt = new OctreeQuantizer(255, 8);

System.Drawing.Bitmap highImage = oqt.Quantize(image);

highImage.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);

byte[] buffer = ms.ToArray();

g.Dispose();

image.Dispose();

highImage.Dispose();

return buffer;

}

OctreeQuantizer.zip(6.6 KB)

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航