c语言中如何打开图片

c语言中如何打开图片

#include

#include

#pragma pack(push, 1)

typedef struct {

unsigned short bfType;

unsigned int bfSize;

unsigned short bfReserved1;

unsigned short bfReserved2;

unsigned int bfOffBits;

} BITMAPFILEHEADER;

typedef struct {

unsigned int biSize;

int biWidth;

int biHeight;

unsigned short biPlanes;

unsigned short biBitCount;

unsigned int biCompression;

unsigned int biSizeImage;

int biXPelsPerMeter;

int biYPelsPerMeter;

unsigned int biClrUsed;

unsigned int biClrImportant;

} BITMAPINFOHEADER;

#pragma pack(pop)

int main(int argc, char argv) {

if (argc != 2) {

printf("Usage: ./BitmapOpen n");

return -1;

}

FILE* file = fopen(argv[1], "rb");

if (!file) {

printf("Could not open filen");

return -1;

}

BITMAPFILEHEADER fileHeader;

fread(&fileHeader, sizeof(BITMAPFILEHEADER), 1, file);

if (fileHeader.bfType != 0x4D42) {

printf("Not a valid bitmap filen");

fclose(file);

return -1;

}

BITMAPINFOHEADER infoHeader;

fread(&infoHeader, sizeof(BITMAPINFOHEADER), 1, file);

unsigned char* imageData = (unsigned char*)malloc(infoHeader.biSizeImage);

fseek(file, fileHeader.bfOffBits, SEEK_SET);

fread(imageData, 1, infoHeader.biSizeImage, file);

fclose(file);

// 输出图像信息

printf("Width: %d, Height: %d, BitCount: %dn", infoHeader.biWidth, infoHeader.biHeight, infoHeader.biBitCount);

// 释放内存

free(imageData);

return 0;

}

相关阅读

女人为什么要嫁人?说句实话,不过是贪图男人的三样东西
365bet在线娱

女人为什么要嫁人?说句实话,不过是贪图男人的三样东西

📅 09-24 👁️ 6371
七星阵的摆放顺序图解
日博365网

七星阵的摆放顺序图解

📅 01-24 👁️ 1859
告别国服卡顿,畅玩穿越火线
365bet在线娱

告别国服卡顿,畅玩穿越火线

📅 07-28 👁️ 8666