看板 C_and_CPP 關於我們 聯絡資訊
使用c語言 讀入一個512*512的圖檔,經取樣 輸出 256*256 原圖 1/4 128*128 1/16 都沒有問題 但想輸出一個171*171 原圖1/9的圖檔,卻顯示繪圖失敗。 想請問171*171這樣大小的圖檔,是在bmp header有那邊要改的嗎 以下是我部分原始碼,麻煩了,謝謝 #define X_SAMPLE 171 Y_SAMPLE 171 fp_t = fopen(t_name, "wb"); if (fp_t == NULL) { printf("fopen fname_t error\n"); return -1; } // file size file_size = X_SAMPLE * Y_SAMPLE + rgb_raw_data_offset; header[2] = (unsigned char)(file_size & 0x000000ff); header[3] = (file_size >> 8) & 0x000000ff; header[4] = (file_size >> 16) & 0x000000ff; header[5] = (file_size >> 24) & 0x000000ff; // width header[18] = X_SAMPLE & 0x000000ff; header[19] = (X_SAMPLE >> 8) & 0x000000ff; header[20] = (X_SAMPLE >> 16) & 0x000000ff; header[21] = (X_SAMPLE >> 24) & 0x000000ff; // height header[22] = X_SAMPLE &0x000000ff; header[23] = (X_SAMPLE >> 8) & 0x000000ff; header[24] = (X_SAMPLE >> 16) & 0x000000ff; header[25] = (X_SAMPLE >> 24) & 0x000000ff; // write header fwrite(header, sizeof(unsigned char), rgb_raw_data_offset, fp_t); // write image_t fwrite(image_t, sizeof(unsigned char), (size_t)(long)X_SAMPLE * Y_SAMPLE * byte_per_pixel, fp_t); -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.123.190 ※ 編輯: supertree 來自: 140.118.123.190 (03/11 20:52) ※ 編輯: supertree 來自: 140.118.123.190 (03/11 20:58)
aecho:該不會跟bmp每個row要補成4byte有關嗎? 03/11 20:59
aecho:因為你的1/4和1/16的每個row剛好都是4byte的倍數~~ 03/11 20:59
VictorTom:印象中BMP是要padding沒錯, 至於多少alignment上網查吧. 03/11 21:19
typeotoco:你沒說錯在哪 03/11 22:04
※ 編輯: supertree 來自: 123.194.38.107 (03/11 22:29)