Advertisement

c语言将rgb565转换为rgb888

阅读量:

在转换rgb565到yuv422过程中,读写rgb565中r,g,b数据遇到困难,于是想到先将rgb565转换为yuv422

复制代码
    #include <stdio.h>
    #include <stdlib.h>
    int main()
     {    
     FILE *input, *output;
    unsigned char r, g, b;    
    unsigned short pixel;    
    input = fopen("input.bin", "rb");    
    if (!input)
     {        
    printf("Failed to open input file.\n");        
    return 1;    }    
    output = fopen("output.bin", "wb");    
    if (!output)
     {        
     printf("Failed to create output file.\n");
    fclose(input);        
    return 1;    
    }    
    while (fread(&pixel, sizeof(pixel), 1, input)) 
    {        
    r = (pixel >> 11) << 3; // 取出高位 5 位,向左移 3 位        
    g = ((pixel >> 5) & 0x3f) << 2; // 取出中间 6 位,向左移 2 位        
    b = (pixel & 0x1f) << 3; // 取出低位 5 位,向左移 3 位        
    // 写入 RGB888 数据        
    fwrite(&r, sizeof(r), 1, output);        
    fwrite(&g, sizeof(g), 1, output);        
    fwrite(&b, sizeof(b), 1, output);    }    
    fclose(input);    
    fclose(output);    
    return 0;}

全部评论 (0)

还没有任何评论哟~