使用OctreeQuantizer提高gdi+绘图质量_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 使用OctreeQuantizer提高gdi+绘图质量

使用OctreeQuantizer提高gdi+绘图质量

 2014/10/9 17:52:19  GC2013  程序员俱乐部  我要评论(0)
  • 摘要:.net中gdi+绘制的图形质量很少,原因是gdi+使用的是256色的。为了提高绘制图片的质量,可以使用是“Octree“算法。“Octree“算法允许我们插入自己的算法来量子化我们的图像。一个好的“颜色量子化”算法“应该考虑在两个像素颗粒之间填充与这两个像素颜色相近的过渡颜色,提供更多可视颜色空间。MorganSkinner提供了很好的“Octree“算法代码,大家可以下载参考使用
  • 标签:使用 Ant
   

.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)
发表评论
用户名: 匿名