[問題]產生新bmp圖檔發生錯誤

看板C_and_CPP (C/C++)作者 (德州生活大不便)時間16年前 (2009/03/11 20:50), 編輯推噓3(301)
留言4則, 3人參與, 最新討論串1/1
使用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)

03/11 20:59, , 1F
該不會跟bmp每個row要補成4byte有關嗎?
03/11 20:59, 1F

03/11 20:59, , 2F
因為你的1/4和1/16的每個row剛好都是4byte的倍數~~
03/11 20:59, 2F

03/11 21:19, , 3F
印象中BMP是要padding沒錯, 至於多少alignment上網查吧.
03/11 21:19, 3F

03/11 22:04, , 4F
你沒說錯在哪
03/11 22:04, 4F
※ 編輯: supertree 來自: 123.194.38.107 (03/11 22:29)
文章代碼(AID): #19jxEcah (C_and_CPP)
文章代碼(AID): #19jxEcah (C_and_CPP)