Here is my full code code-代码的摘录在问题的底部。
我对功能policz
和koloruj
有问题。我需要将灰度的位图转换为rgb。
有一张表格,显示位图应如何从n(greyscale)
转换为rgb(color)
。运行以下代码片段显示应如何转换位图:
<table align="center"><tr><b><th align="center">n</th><th align="center">r<sub>n</sub></th><th align="center">g<sub>n</sub></th><th align="center">b<sub>n</sub></th></b></tr><tr><td align="center">0</td><td align="center">0</td><td align="center">0</td><td align="center">0</td></tr><tr><td align="center">1-85</td><td align="center">r<sub>n-1</sub>+3</td><td align="center">0</td><td align="center">0</td></tr><tr><td align="center">86</td><td align="center">255</td><td align="center">0</td><td align="center">0</td></tr><tr><td align="center">87-170</td><td align="center">255</td><td align="center">g<sub>n-1</sub>+3</td><td align="center">0</td></tr><tr><td align="center">171</td><td align="center">255</td><td align="center">255</td><td align="center">0</td></tr><tr><td align="center">172-255</td><td align="center">255</td><td align="center">255</td><td align="center">b<sub>n-1</sub>+3</td></tr></table>
int policz(int i, char rgb, kolor tab[])
{
int p;
switch (rgb)
{
case 'r':
p = tab[i-1].R+3;
if(p>255)
{
return 255;
}
else return p;
break;
case 'g':
p= tab[i-1].G+3;
if(p>255)
{
return 255;
}
else return p;
break;
case 'b':
p= tab[i-1].B+3;;
if(p>255)
{
return 255;
}
else return p;
break;
}
}
void koloruj(unsigned char tab[], kolor tab_k[], BITMAPINFOHEADER ob)
{
char rgb;
for(int i=0; i<ob.biSizeImage/3; i++)
{
if(tab[i]==0)
{
tab_k[i].R=0;
tab_k[i].G=0;
tab_k[i].B=0;
}
NULL;
if(tab[i]>0 && tab[i]<86)
{
rgb = 'r';
tab_k[i].R=policz(i, rgb,tab_k);
tab_k[i].G=0;
tab_k[i].B=0;
}
NULL;
if(tab[i]==86)
{
tab_k[i].R=255;
tab_k[i].G=0;
tab_k[i].B=0;
}
NULL;
if(tab[i]>86 && tab[i]<171)
{
rgb = 'b';
tab_k[i].R=255;
tab_k[i].G=policz(i, rgb,tab_k);
tab_k[i].B=0;
}
NULL;
if(tab[i]==171)
{
tab_k[i].R=255;
tab_k[i].G=255;
tab_k[i].B=0;
}
NULL;
if(tab[i]>171 && tab[i]<256)
{
rgb = 'b';
tab_k[i].R=255;
tab_k[i].G=255;
tab_k[i].B=policz(i, rgb, tab_k);
}
NULL;
}
}
我猜这两个函数的代码我都错了,这让我感到紧张
一切都转移到实际的问题上了>>
如果我正确地读取了表,则可以这样重写它: