两张24位bmp图片,左右拼接问题

Ronal_Lee 2009-06-04 11:57:40
两张同样的24位bmp图片左右拼接。

基本步骤:
首先分别读取两个文件头信息BITMAPFILEHEADER,再读取位图信息BITMAPINFOHEADER,然后计算出拼接后的位图的高和宽,以及拼接后的文件总大小和位图数据大小。位图数据的4字节对齐问题我考虑了,并且也已经计算出拼接后的位图每行数据需要补充几个字节的“0”,然后我就把新数据保存在内存中,最后保存到“bmp3.bmp”文件中。之后“bmp3.bmp”就出现了问题。

问题:拼接后的图片“bmp3.bmp”下半部分正常,上半部分图基本上能分辨出图像,但形状和颜色就变了,就像错位了一样。为什么会出现这种情况呢,一部分正常而一部分变形、变颜色?

谢谢,请各位帮助解答。
...全文
425 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
太乙 2009-06-05
  • 打赏
  • 举报
回复
位图数据的4字节对齐问题我考虑了,并且也已经计算出拼接后的位图每行数据需要补充几个字节的“0”,

----------
位图对齐是否是4字节?
计算是否正确???
dongpy 2009-06-05
  • 打赏
  • 举报
回复
楼主可以先用两张不用补齐字节(即宽度都是4的倍数)的位图测试一下,如果没问题,那就是补齐字节没处理好。
dongpy 2009-06-05
  • 打赏
  • 举报
回复
拼接时,左边位图数据区为补齐而填充的零字节数据,去掉没有。
king99 2009-06-05
  • 打赏
  • 举报
回复
肯定没对齐~
Ronal_Lee 2009-06-05
  • 打赏
  • 举报
回复
谢谢楼上几位。问题我找到了。

我是以文本形式“打开”“写”“bmp3.bmp”文件的,导致向文件中写数据时出错,例如:把"0x0a"保存到“bmp3.bmp”文件中,保存完以后,我用UltraEdit看“bmp3.bmp”的二进制形式,发现写入了两个字节:"0a0d",我纳闷了不知道为什么。感觉"0a0d"是不是“回车”啊??。以二进制形式写的时候就没错,大意啊!
淘淘图片拼接之星是一款专业的将多张图片拼接成一张大图的软件。 本软件的主要特性有: 1.可以任意设置拼图的行列数,如单行、单列、多行多列; 2.支持缩放原图图片:可以统一原图的宽度或统一原图的高度; 3.支持多种图像缩放重新取样插值算法,如最近相邻、两次线性、两次立方算法等; 4.支持多种图片排列顺序,如:横排左起、横排右起、竖排左起、竖排右起; 5.支持按的图片列表中的顺序的反序排版; 6.原图的置可以多种方式定。如左上角、上边、右上角、右边、右下角、下边、左下角、左边、居中排放; 7.支持紧缩排版,可以消除大小图之间的空隙; 8.可以为每张小图片加上边框,边框颜色可以任意指定; 9.支持输出JPG、JPEG、PNG、GIF、BMP等常用图片格式。 10.支持“添加文字水印”的功能:可以在制作好的拼图上添加文件水印,支持半透明度,水印方向支持横向或竖向。 11.支持手工自由拖放图片以改变图片在拼图中的置 12.新增图片水印,可以将生成的拼图文件自动打上各种图片水印.本软件附带赠送170多个系统图片水印,如推荐、收藏、斜条纹、新品、热卖、秒杀、赠品、限时等等。 13.文字水印和图片水印都可以设置水平相对偏移和垂直相对偏移,让你可以微调水印的置 14.边框设置支持添加背景纹理图或单色背景 15.新增自动缩放生成的拼图的尺寸 本软件运行环境: 32和64的 WinXP / 2003 / Vista / Win7

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧