从C中的位图读取BGR颜色

从C中的位图读取BGR颜色,第1张

概述我试图从24位BMP文件中获取RGB值.我正在使用的图像是一个小图像,全部为红色,因此所有像素BGR配置应为B:0 G:0 R:255.我这样做: int main(int argc, char **argv){ principal(); return 0;}typedef struct { unsigned char blue; unsigned char 我试图从24位BMP文件中获取RGB值.我正在使用的图像是一个小图像,全部为红色,因此所有像素BGR配置应为B:0 G:0 R:255.我这样做:

int main(int argc,char **argv){    principal();    return 0;}typedef struct {    unsigned char blue;    unsigned char green;    unsigned char red;} rgb;typedef struct {    int ancho,alto;    rgb *pixeles[MAX_COORD][MAX_COORD];} tBitmapData;voID principal(){    file *fichero;    tBitmapData *bmpdata = (tBitmapData *) malloc(sizeof(tBitmapData));    rgb *pixel;    int i,j,num_bytes;    unsigned char *buffer_imag;    char nombre[] = "imagen.bmp";    fichero = fopen(nombre,"r");    if (fichero == NulL)            puts("No enconTrado\n");    else {            fseek(fichero,18,SEEK_SET);            fread(&(bmpdata->ancho),sizeof((bmpdata->ancho)),4,fichero);            printf("Ancho: %d\n",bmpdata->ancho);            fseek(fichero,22,SEEK_SET);            fread(&(bmpdata->alto),sizeof((bmpdata->alto)),fichero);            printf("Alto: %d\n",bmpdata->alto);    }    num_bytes = (bmpdata->alto * bmpdata->ancho * 3);    fseek(fichero,54,SEEK_SET);    for (j = 0; j < bmpdata->alto; j++) {            printf("R   G   B Fila %d\n",j + 1);            for (i = 0; i < bmpdata->ancho; i++) {                    pixel =                        (rgb *) malloc(sizeof(rgb) * bmpdata->alto *                                       bmpdata->ancho * 3);                    fread(pixel,1,sizeof(rgb),fichero);                    printf("Pixel %d: B: %3d G: %d R: %d \n",i + 1,pixel->blue,pixel->green,pixel->red);            }    }    fclose(fichero);}

问题是当我打印它们时,第一个像素很好,B:0 G:0 R:255,但是它们开始变为B:0 G:255 R:0,然后变为B:255 G: 0 R:0.如果宽度为10像素,则每10个像素发生一次变化.

解决方法 在 BMP file format中,可以填充每行像素数据,以便向上舍入到4个字节的倍数.

如果你有10个24位像素,那就是30个字节,然后是2个字节的填充.您的代码不会跳过填充.

总结

以上是内存溢出为你收集整理的从C中的位图读取BGR颜色全部内容,希望文章能够帮你解决从C中的位图读取BGR颜色所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1213509.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存