使用OctreeQuantizer提高gdi+绘图质量
2014-10-09 16:57
232 查看
.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;
}
为了提高绘制图片的质量,可以使用是“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;
}
相关文章推荐
- [转]使用bitblt提高GDI+绘图的效率
- 使用bitblt提高GDI+绘图的效率
- 利用GDI+的双缓冲技术来提高绘图效率
- 使用GDI+绘图
- 利用GDI+的双缓冲技术来提高绘图效率
- ABAP--使用SLIN事务码进行ABAP程序扩展语法检查,提高程序开发的质量
- ABAP--使用SLIN事务码进行ABAP程序扩展语法检查,提高程序开发的质量
- 工欲善,必先利其器 -- (使用开源工具提高J2EE系统的质量)
- 在.net中使用GDI+来提高gif图片的保存画质
- GDI+ 学习记录(20): 绘图质量
- 使用GDI+绘图
- 再学 GDI+[60]: TGPGraphics.SetSmoothingMode - 绘图质量
- DotNet下使用GDI+绘图时资源是否需要释放
- 利用GDI+的双缓冲技术来提高绘图效率(转)
- 利用GDI+的双缓冲技术来提高绘图效率
- 使用GDI+提高gif图片的保存画质
- 利用GDI+的双缓冲技术来提高绘图效率(转)
- 使用VSTS提高托管代码质量
- 在.net中使用GDI+来提高gif图片的保存画质
- 如何使用 GDI+ 双缓冲 解决绘图闪烁问题