关于C语言问题,悬赏100个财富值。只要参与讨论或者给意见,都给予一定的悬赏。
用C语言写个应用程序(命令行运行的就行)提取24bitbmp图像数据,以RGB888保存成图像数组。...
用C语言写个应用程序(命令行运行的就行)提取24bit bmp图像数据,以RGB888保存成图像数组。
展开
3个回答
展开全部
typedef struct IMAGE_TYP
{
long width;
long height;
long offset;
long numberBytes;
long bpp;
unsigned char *pixelData;
unsigned char *tempBuffer;
} IMAGE, *IMAGE_PTR;
void CovertRgb24ToRgb888 ( IMAGE_PTR srcImage, IMAGE_PTR destImage )
{
for ( int y = 0; y <= srcImage->height; y++ )
{
for ( int x = 0; x <= srcImage->width; x++ )
{
unsigned char blue = srcImage->pixelData[y*srcImage->offset + x*3 + 0],
green = srcImage->pixelData[y*srcImage->offset + x*3 + 1],
red = srcImage->pixelData[y*srcImage->offset + x*3 + 2];
destImage->pixelData[y*srcImage->offset + x*3 + 0] = red;
destImage->pixelData[y*srcImage->offset + x*3 + 1] = green;
destImage->pixelData[y*srcImage->offset + x*3 + 2] = blue;
}// End For
}// End For
}
{
long width;
long height;
long offset;
long numberBytes;
long bpp;
unsigned char *pixelData;
unsigned char *tempBuffer;
} IMAGE, *IMAGE_PTR;
void CovertRgb24ToRgb888 ( IMAGE_PTR srcImage, IMAGE_PTR destImage )
{
for ( int y = 0; y <= srcImage->height; y++ )
{
for ( int x = 0; x <= srcImage->width; x++ )
{
unsigned char blue = srcImage->pixelData[y*srcImage->offset + x*3 + 0],
green = srcImage->pixelData[y*srcImage->offset + x*3 + 1],
red = srcImage->pixelData[y*srcImage->offset + x*3 + 2];
destImage->pixelData[y*srcImage->offset + x*3 + 0] = red;
destImage->pixelData[y*srcImage->offset + x*3 + 1] = green;
destImage->pixelData[y*srcImage->offset + x*3 + 2] = blue;
}// End For
}// End For
}
展开全部
你知道转码规则么?知道转码规则的话,就剩下读写二进制文件了吧好像?这方面我也不熟悉
更多追问追答
追问
问题是我也不是很清楚呀。愁……
追答
你这需求是哪里提出来的?不对我刚才的描述错了,好像是让你把一个位图里的颜色数据以RGB888的形式表示成数组,我刚看成让你转成另外格式的图像了。
你得要知道如何对bmp文件解码,另外还要了解RGB888的意思,这些去google或者baidu吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不会啊。。。我是被题目吸引的。。。我想要悬赏。。弱弱的。。。可以不。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询