用C#代码如何实现将原24b,32b,16b之类的真彩图转换成8b的彩色图片,不失真,也不是灰度图片。水晶报表只有在加载8b  256的图的时候才不会失真,其他的都会失真,斑点模糊。

解决方案 »

  1.   

    参考 
    http://www.codeproject.com/Articles/7124/Image-Bit-depth-conversion-from-32-Bit-to-8-Bit
      

  2.   

    其实GDI+1.1就已经有了这个转换的功能的,当然需要在VISTA之后的系统才能使用。但是直到VS2010还没有把这个功能封装到bitmap类中。自己写转换函数其实也有很多的例子的,codeproject上直到能找到10个,我上次在codeproject上看到一个人总结了很多种算法的,不过那个例子的速度太慢了。cximage里也有类似的算法,其实就是先获得 一个好的调色板 ,然后再采用误差抖动或者order dither之类的技术来降低图像视觉上的损失。 当然,这里面也涉及到不少技术上的细节。
      

  3.   

    http://www.codeproject.com/Articles/66341/A-Simple-Yet-Quite-Powerful-Palette-Quantizer-in-C这个的功能很好,不过代码效率不高。