不正确的 BMP 值

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

我一直在尝试将文件数据从一个 BMP 文件复制到另一个。但是,复制的值不正确或与显示的值不一致: https://learn.microsoft.com/en-us/windows/win32/api/wingdi/ns-wingdi-bitmapinfoheaderhttps://learn.microsoft.com/en-us/windows/win32/api /wingdi/ns-wingdi-位图文件头

例如: 在现场:bfType = BM (0x4D42) 我的代码:bfType = 55551

bmp.h

#include <stdint.h>

typedef uint8_t  BYTE;
typedef uint32_t DWORD;
typedef int32_t  LONG;
typedef uint16_t WORD;

typedef struct
{
    WORD   bfType;
    DWORD  bfSize;
    WORD   bfReserved1;
    WORD   bfReserved2;
    DWORD  bfOffBits;
} 
BITMAPFILEHEADER;


typedef struct
{
    DWORD  biSize;
    LONG   biWidth;
    LONG   biHeight;
    WORD   biPlanes;
    WORD   biBitCount;
    DWORD  biCompression;
    DWORD  biSizeImage;
    LONG   biXPelsPerMeter;
    LONG   biYPelsPerMeter;
    DWORD  biClrUsed;
    DWORD  biClrImportant;
} 
BITMAPINFOHEADER;

typedef struct
{
    BYTE  rgbtBlue;
    BYTE  rgbtGreen;
    BYTE  rgbtRed;
} 
RGBTRIPLE;

main.c

// Public Libraries

#include <stdio.h>
#include <stdlib.h>

// Private Libraries
#include "bmp.h"

// Global Variables
#define ONCE 1

// Start
int main(int argc, char* argv[])
{

    if (argc != 4)
    {
        printf("ERROR: Command Line\n");
        printf("EXE -> In -> Out -> Filter\n\n");
        return 1;
    }

    // Open Original Image
    FILE* Original = fopen(argv[1], "rb");
    if (Original == NULL)
    {
        printf("ERROR: Original Image Can't Be Found\n");
        printf("Check File Name\n\n");
        return 1;
    }
    else
    {
        printf("Image Found!\n\n");
    }

    // Original Image Data

    // Read Bitmap File Header
    BITMAPFILEHEADER BF;
    fread(&BF, ONCE, sizeof(BITMAPFILEHEADER), Original);
    printf("Bitmap File Header Read...\n\n");

    // Read Bitmap Info Header
    BITMAPINFOHEADER BI;
    fread(&BI, ONCE, sizeof(BITMAPINFOHEADER), Original);
    printf("Bitmap Info Header Read...\n\n");
}

我还硬编码了每个值以查看它们产生的结果

bf类型:55551 bfSize:1179258880 bfReserved1:17993 bfReversed2:256 bfOffBits: 1207959809

bi尺寸:18432 双宽:1477239551 双高:1598243657 双翼飞机:21072 双位计数:17999 双压缩:4541513 双尺寸图像:257 biXPelsPerMeter:1766606860 biYPelsPerMeter:268595054 biClr用过的:1852637184 biClr重要:1196585588

c cs50 fread bmp
© www.soinside.com 2019 - 2024. All rights reserved.