如何將單色bmp圖像文件(在我的情況下是16 * 16像素)轉換爲二進制格式?該代碼讀取位圖信息。我必須將像素信息存儲到一個數組中&它沒有正確存儲。我有共同的代碼bmp在C中的圖像數據
#pragma pack(push, 1)
typedef struct BitMap
{
short Signature;
long Reserved1;
long Reserved2;
long DataOffSet;
long Size;
long Width;
long Height;
short Planes;
short BitsPerPixel;
long Compression;
long SizeImage;
long XPixelsPreMeter;
long YPixelsPreMeter;
long ColorsUsed;
long ColorsImportant;
long data[16];
}BitMap;
#pragma pack(pop)
讀取圖片文件:
struct BitMap source_info;
struct Pix source_pix;
FILE *fp;
FILE *Dfp;
Dfp=fopen("filename.bin","wb")
if(!(fp=fopen("filename.bmp","rb")))
{
printf(" can not open file");
exit(-1);
}
fread(&source_info, sizeof(source_info),1,fp);
printf("%d\n",source_info.DataOffSet);
printf("%d\n",source_info.Width*source_info.Height);
for(i=0;i<16;i++)
fprintf(Dfp,"%d\t",source_info.data[i]);
觀測的輸出使用十六進制編輯器是
突出顯示的數據我想存儲在數據陣列,這樣我可以使用它進一步在代碼中。
但是在filename.bin輸出
0 16777215 63 63 63 95 95 95
31 31 31 31 31 31 31 31
我是新來這個領域。有人能幫我解決我出錯的地方嗎?
首先,它可能是更容易,如果你打印的十六進制數,而不是比較值。 –
@JoachimPileborg是的。實際上,如果OP嘗試使用十六進制數字沒有問題 - 它們只是相同的。 – starrify
十六進制輸出是 0x00 0xffffff 0x3f 0x3f 0x3f 0x5f 0x5f 0x5f 0x1f 0x1f 0x1f 0x1f 0x1f 0x1f 0x1f 0x1f你能解釋輸出得到存儲?我無法獲得相同的輸出 – user2967899