标题:vfp 的image控件是不是不能识别32位的bmp文件
只看楼主
sam_jiang
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:542
专家分:781
注 册:2021-10-13
结帖率:97.44%
已结贴  问题点数:20 回复次数:12 
vfp 的image控件是不是不能识别32位的bmp文件
如题,这个image控件是不是不能正常显示bit位为32的bmp文件?windows的资源管理器可以识别,第三方图片软件看图王可以查看,photoshop也可以查看,image控件显示就花了。。。

这算不算是个bug? 有什么办法可以补救?

附图:


你们看看能不能用image控件显示我下面这个bmp文件(下载后把jpg后缀去掉)


[此贴子已经被作者于2023-5-13 10:39编辑过]

搜索更多相关主题的帖子: image 控件 文件 bmp 识别 
2023-05-13 10:38
foxfans
Rank: 4
等 级:贵宾
威 望:11
帖 子:90
专家分:278
注 册:2021-10-23
得分:0 
深32bmp以前碰到过这个问题,我的解决方法有二个供参考
1.如果是通过gdi这种或者dc画出来没有写文件的可以直接从内存里面获取图像stream流指针通过sys(2600,拷出来,赋值给image PictureVal
2.如果是已保存的本地文件可以thisform.image1.PictureVal =FILETOSTR(GETFILE('bmp32深.bmp'))

[此贴子已经被作者于2023-5-13 14:13编辑过]

2023-05-13 14:03
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:29
帖 子:484
专家分:1827
注 册:2018-3-13
得分:0 
以下是引用foxfans在2023-5-13 14:03:16的发言:

深32bmp以前碰到过这个问题,我的解决方法有二个供参考
1.如果是通过gdi这种或者dc画出来没有写文件的可以直接从内存里面获取图像stream流指针通过sys(2600,拷出来,赋值给image PictureVal
2.如果是已保存的本地文件可以thisform.image1.PictureVal =FILETOSTR(GETFILE('bmp32深.bmp'))

2023-05-13 15:18
sam_jiang
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:542
专家分:781
注 册:2021-10-13
得分:0 
回复 2楼 foxfans
刚才试了以下,不成功,你可以写个示例吗?
_screen.addobject("image1","image")
cpic=FILETOSTR("_tmp1_cutted.bmp") &&深32位图片
_screen.image1.Pictureval=cpic
*!* opic=LOADPICTURE("_tmp1_cutted.bmp") &&用这个也不行
*!* _screen.image1.Pictureval=opic
_screen.image1.visible=.t.


[此贴子已经被作者于2023-5-13 15:36编辑过]

2023-05-13 15:31
foxfans
Rank: 4
等 级:贵宾
威 望:11
帖 子:90
专家分:278
注 册:2021-10-23
得分:0 
我这里是Vfp9.0 7423


[此贴子已经被作者于2023-5-13 15:46编辑过]

2023-05-13 15:39
wxzd123
Rank: 2
等 级:论坛游民
帖 子:238
专家分:43
注 册:2012-9-6
得分:0 
好像得是rgb,上次有一个图是cmyk就出错
2023-05-13 15:42
sam_jiang
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:542
专家分:781
注 册:2021-10-13
得分:0 
我的是09.00.0000.2412,大爷的,盗版软件。。。

看来得重新下载个vfp

[此贴子已经被作者于2023-5-13 15:53编辑过]

2023-05-13 15:45
sam_jiang
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:542
专家分:781
注 册:2021-10-13
得分:0 
回复 6楼 wxzd123
是rgb的,是色深的问题。
2023-05-13 15:54
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
文件头数据不对,VFP可能没有校对。
其中 BITMAPINFOHEADER 头的 SizeImage: 980
而 Bitmap Data Info 的 DataSize: 3696
且 BITMAPFILEHEADER 的 Size: 3750;OffBits: 54
显然 SizeImage 为 980 (0x03D4)不对,应该是 3696 (3750 - 54)
修改 SizeImage 为 3696 (0x0E70)就可以




2023-05-13 16:12
foxfans
Rank: 4
等 级:贵宾
威 望:11
帖 子:90
专家分:278
注 册:2021-10-23
得分:10 
生成文件源头做起,把结构大小写清楚.
2023-05-13 16:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-512184-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052737 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved