萧萧落木(RocWood) <rocwood@sina.com>
最近在研究UO的MUL文件展开,不料在转换BMP格式时被BITMAP绊倒了,
情况如下:
BMP:TBitmap;
BMP:=TBitmap.Create;
BMP.Height:=H;
BMP.Width:=W;
BMP.PixelFormat:=pf24bit;
BMP.HandleType := bmDIB;
我从MUL文件里读取15bit色彩的数据流,转换成RGB格式,按行写入BMP.ScanLine,
最后BMP.SaveToFile,按理说应该对了,可生成的BMP用ACDSEE一看,色彩明显不对,
有的文件的左右两半对调了,怀疑是转换RGB出错,重新BMP.LoadFromFile读入刚刚
生成的BMP,在delphi看里竟然是对的!!!
于是先直接保存成pf15bit格式,正确,再用ACDSEE转换成24bitBMP,比较这个24bit的
BMP和我原先生成的BMP,竟然发现SaveToFile生成的BMP在文件头和数据区中多了48字
节的东东......该死的delphi,真弱智,已经是RGB格式了还保存什么调色版...faint
于是在源程序里显式加入 BMP.IgnorePalette:=True 终于对了:-D
原来一直依赖bitmap类的savetofile,没想到用不用调色板竟然bitmap类自己不会判
断...真伤心,白白花了一天时间调试,还以为是我编错了...
打倒Inprise!!!
--
心存相信 成就奇迹
There can be miracle when u believe
瞬间的感动 造就了一生的缘分
网络的冲动 支撑着第二次人生
---------------------------------------
奔月逐日的 萧萧落木(Roc.j.Wood)