scale,调整bmp结构的大小,编程c

问题描述 投票:0回答:1

我的任务是按给定的比例缩放bmp图片:

stream:base64 bmp图片代码:

Qk1CAAAAAAAAADYAAAAoAAAABAAAAAEAAAABABgAAAAAAAwAAAAjLgAAIy4AAAAAAAAAAAAA/////wAAAP8AAAAA

scale.c] >>

struct bmp_image* scale(const struct bmp_image* image, float factor){
    if(image == NULL || factor <= 0){
        return NULL;
    }

    .........
    int width = bmp->header->width;
    int height = bmp->header->height;
    int widthNew = (int)round((float)width * factor);
    int heightNew = (int)round((float)height * factor);


    for (uint32_t y = 0; y < heightNew; y++){
        for(uint32_t z = 0; z< widthNew; z++){
            bmp->data[(y*widthNew)+z].red=image->data[(int)(floor((float)y/(float)factor)*width+floor((float)z/(float)factor))].red;
            bmp->data[(y*widthNew)+z].green=image->data[(int)(floor((float)y/(float)factor)*width+floor((float)z/(float)factor))].green;
            bmp->data[(y*widthNew)+z].blue=image->data[(int)(floor((float)y/(float)factor)*width+floor((float)z/(float)factor))].blue;
        }
    }

    return bmp;     
}

main.c

] >>
FILE *output_p8 = fopen("scale.bmp", "w");
    struct bmp_image* newimage8 = NULL;
    newimage8 = scale(image, 1.025656);  
    free_bmp_image(image);    
    write_bmp(output_p8,newimage8);
    free_bmp_image(newimage8);    
    fclose(output_p8);

数据输出之后我得到的是:

ffffff ffffff ff0000 00ff00

我应该拥有的数据:

ffffff ff0000 00ff00 000000

有什么建议吗?

我的任务是按给定的比例缩放bmp图片:流:base64 bmp图像代码:Qk1CAAAAAAAAADYDYAAoAAAABAAAAAEAAAABABgAAAAAAwwAAjLgAAIy4AAAAAAAAAAAAA ///// wAAAP8AAAAA scale.c struct ...

c resize structure scale bmp
1个回答
0
投票
int widthNew = round(width * factor);
© www.soinside.com 2019 - 2024. All rights reserved.