作者supertree (德州生活大不便)
看板C_and_CPP
标题[问题]产生新bmp图档发生错误
时间Wed Mar 11 20:50:43 2009
使用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)
1F:推 aecho:该不会跟bmp每个row要补成4byte有关吗? 03/11 20:59
2F:→ aecho:因为你的1/4和1/16的每个row刚好都是4byte的倍数~~ 03/11 20:59
3F:推 VictorTom:印象中BMP是要padding没错, 至於多少alignment上网查吧. 03/11 21:19
4F:推 typeotoco:你没说错在哪 03/11 22:04
※ 编辑: supertree 来自: 123.194.38.107 (03/11 22:29)