OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3138|回复: 4

bmp图片文件存储求助

[复制链接]

3

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-11-1
在线时间
10 小时
发表于 2015-11-1 19:45:47 | 显示全部楼层 |阅读模式
5金钱
板子是战舰v3的板子,在照相机实验的基础上做的修改,设想是不用LCD屏直接把数据从ov7670读出后以16进制直接写到sd卡的文件
现在的问题是我写进的文件有300k(正常拍是150k)而且电脑读不出来,而我用网络调试助手把这个文件当作文件源发出,再接收转向文件就正常了,是150k的文件并且图片没有问题,也就说明数据没错,应该是存储方式的问题?我也不知道我又没有表达清楚= =
就是说写bmp文件数据时我直接把数据以16进制写入好像不行啊,应该怎么写呢?
[mw_shl_code=c,true] f_open (file,"0://PHOTO//PIC0000.bmp",FA_WRITE); sprintf(buf,"424D4258020000000000420000002800000040010000F00000000100100003000000000000000000000000000000000000000000000000F80000E00700001F000000"); f_write(file,(u8*)buf,132,&bw); for(k=0;k<240;k++) { f_lseek(file,1280*k+132); for(j=0;j<320;j++) { OV7670_RCK_L; color1=GPIOC->IDR&0XFF; //读数据 OV7670_RCK_H; OV7670_RCK_L; color1|=(GPIOC->IDR&0XFF)<<8; //读数据 OV7670_RCK_H; if(color1==0x0000) { printf("0000"); f_write(file,"0000",4,&bw); } else if(color1<0x000F) { printf("000%x",color1); sprintf(buf,"000%x",color1); f_write(file,(u8*)buf,4,&bw); } else if(color1<0x00FF) { printf("00%x",color1); sprintf(buf,"00%x",color1); f_write(file,(u8*)buf,4,&bw); } else if(color1<0x0FFF) { printf("0%x",color1); sprintf(buf,"0%x",color1); f_write(file,(u8*)buf,4,&bw); } else { printf("%x",color1); sprintf(buf,"%x",color1); f_write(file,(u8*)buf,4,&bw); } } } f_close (file);[/mw_shl_code]
还有0a总是写成a...我这样解决总感觉不是很好,有什么好方法吗?

最佳答案

查看完整内容[请看2#楼]

楼主,我们存储的是bmp文件,数据是二进制的. 你这搞成了存储ASCII数据了.... 搞明白ASCII和二进制的区别,你再来写代码吧.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-11-1 19:45:48 | 显示全部楼层
楼主,我们存储的是bmp文件,数据是二进制的.
你这搞成了存储ASCII数据了....
搞明白ASCII和二进制的区别,你再来写代码吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-11-1
在线时间
10 小时
 楼主| 发表于 2015-11-1 21:55:32 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
网上了解了一下区别,但还是不会写啊,给些提示呗,比如怎么把00100000以二进制写入文件啊,写两句程序让我琢磨琢磨啊,小白真心求教
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-11-1 23:33:05 | 显示全部楼层
回复【3楼】qq1508448759:
---------------------------------
看我们教程.
照相机实验.
有bmp拍照的.你看看我是怎么写数据的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-11-1
在线时间
10 小时
 楼主| 发表于 2015-11-2 10:46:44 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
学着教程里面定义了两个结构体搞定了,谢谢原子哥了^_^
基础知识一塌糊涂学写代码好吃力。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 20:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表