有关图片颜色转换的问题.
我读入了一个16位真彩色的图片,怎么把它以256色显示出来?
读入一个256色的图片,怎么把它以16位真彩色显示出来?
是不是有固定的算法啊?最好有源代码.呵呵.
问题点数:100、回复次数:9Top
1 楼dirdirdir3(风)回复于 2005-08-02 20:31:56 得分 20
http://www.vckbase.com/code/listcode.asp?mclsid=7&sclsid=703Top
2 楼cdef9108()回复于 2005-08-02 20:44:39 得分 10
帮你,顶一下!!Top
3 楼tghost333(换了工具,总是新手)回复于 2005-08-02 21:00:45 得分 0
有没有256转16真彩的啊?这个好象比较难.Top
4 楼yuanquande(醉公子)回复于 2005-08-02 21:22:26 得分 10
真彩转256可以,
256转真彩好象不行吧Top
5 楼yuanquande(醉公子)回复于 2005-08-02 21:23:34 得分 10
256转真彩信息不够Top
6 楼dirdirdir3(风)回复于 2005-08-02 21:28:51 得分 30
倒,256转真彩很简单的啊,自己随便把点转换成对应的调色版的色彩就可以了。
相当于查数组一样。调色版是一个RGB的数组。1-256则对应其中的一个RGB.Top
7 楼tghost333(换了工具,总是新手)回复于 2005-08-03 19:51:56 得分 0
to风:
真的吗?具体怎么实现?Top
8 楼dirdirdir3(风)回复于 2005-08-04 08:50:45 得分 0
如pdc以及bmp8是256色的x*y大小,用
GetDibits(pdc.m_hdc,bmp8,0,0,buf,bmpinfo,DIB_RGB_COLORS);
得到buf后,buf1=new char[x*y*3];
for(int i=0;i<x*y;i++)
{
buf1[3*i]=bmpinfo->bmicolors[buf[i]].rgbRed;
buf1[3*i+1]=bmpinfo->bmicolors[buf[i]].rgbGreen;
buf1[3*i+2]=bmpinfo->bmicolors[buf[i]].rgbBlue;
}
然后由buf1生成24bit图片。
bmp24.CreateBitmap(x,y,1,24,buf1);
Top
9 楼vcmute(BCare4 H1Rest Good9!)回复于 2005-08-04 09:03:37 得分 20
GetDibits中传入的BITMAPINFOHEADER的biBitCount为所需的位数即可
转16色可能需要读系统的调色板,或通过八叉树+抖动法实现Top




