注册 登录
编程论坛 VFP论坛

接收到 图片转为base64字符串后,如何在VFP中重新显示该图片呢?

lnfx2019 发布于 2022-08-24 19:13, 1989 次点击
各位高手:
附件信息是一张图片然后,通过接口获取到该 附件byte的BASE64字符串 ,如何再将该字符串数据转为图片呢?

请大家指教!!
16 回复
#2
lnfx20192022-08-24 19:19
回复 楼主 lnfx2019
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
#3
lnfx20192022-08-24 19:20
以下是引用lnfx2019在2022-8-24 19:19:22的发言:

上面分别是原图和转为 base64字符串 ,请教如何将该字串转为图片!!
#4
cssnet2022-08-25 06:53
lcText = FILETOSTR("图片转为base64字符串.txt")
lcJpg = STRCONV(lcText, 14)
STRTOFILE(lcJpg, "base64字符串转为图片.jpg")

或者,装逼一点,决计不让观众看懂,即便一行灭了它:
STRTOFILE(STRCONV(FILETOSTR("图片转为base64字符串.txt"), 14), "base64字符串转为图片.jpg")
#5
cssnet2022-08-25 07:07
顺便说一句:
我没检查源图片是否JPG,只是看你贴图为JPG,就随手加了.jpg的扩展名。

再顺便说一句:
都2022年了,前些天看到有人竟还坚持用VFP6,心道:VFP9早都嫌太过落后太过古董了,居然还在用VFP6?VFP6的strconv()缺了一大块必要功能,就比方说,这个Base64互转;难不成,这都2022年了,还要臣妾手动去写Base64编码/解码?
——毛病!真是的。
#6
schtg2022-08-25 07:46
回复 3楼 lnfx2019
请试一试,可否?
cstr = FILETOSTR(SYS(5)+CURDIR()+[图片转为base64字符串.txt])
= STRTOFILE(STRCONV(cstr,14),SYS(5)+CURDIR()+[图片.JPG])
#7
吹水佬2022-08-25 08:05
_screen.AddObject("image1","image")
_screen.image1.Visible = 1
_screen.image1.PictureVal = STRCONV(FILETOSTR("图片转为base64字符串.txt"),14)
MESSAGEBOX("关闭")
_screen.RemoveObject("image1")
#8
lnfx20192022-08-25 14:32
以下是引用cssnet在2022-8-25 06:53:42的发言:

lcText = FILETOSTR("图片转为base64字符串.txt")
lcJpg = STRCONV(lcText, 14)
STRTOFILE(lcJpg, "base64字符串转为图片.jpg")

或者,装逼一点,决计不让观众看懂,即便一行灭了它:
STRTOFILE(STRCONV(FILETOSTR("图片转为base64字符串.txt"), 14), "base64字符串转为图片.jpg")


实测好用,特别最后一行,装到了!!!
#9
lnfx20192022-08-25 14:33
以下是引用schtg在2022-8-25 07:46:50的发言:

请试一试,可否?
cstr = FILETOSTR(SYS(5)+CURDIR()+[图片转为base64字符串.txt])
= STRTOFILE(STRCONV(cstr,14),SYS(5)+CURDIR()+[图片.JPG])



实测好用,与楼上异曲同工。
#10
lnfx20192022-08-25 14:41
以下是引用吹水佬在2022-8-25 08:05:01的发言:

_screen.AddObject("image1","image")
_screen.image1.Visible = 1
_screen.image1.PictureVal = STRCONV(FILETOSTR("图片转为base64字符串.txt"),14)
MESSAGEBOX("关闭")
_screen.RemoveObject("image1")



吹版的我还在调试,不知什么原因,image控件没能直接显示该图片呢
#11
lnfx20192022-08-25 15:14
以下是引用吹水佬在2022-8-25 08:05:01的发言:

_screen.AddObject("image1","image")
_screen.image1.Visible = 1
_screen.image1.PictureVal = STRCONV(FILETOSTR("图片转为base64字符串.txt"),14)
MESSAGEBOX("关闭")
_screen.RemoveObject("image1")



把吹版的和楼上的综合了下,这个可以显示了!!!
_screen.AddObject("image1","image")
_screen.image1.Visible = 1
cstr = FILETOSTR(SYS(5)+CURDIR()+[图片转为base64字符串.txt])
STRTOFILE(STRCONV(cstr,14),SYS(5)+CURDIR()+[图片.JPG])
_screen.image1.Picture = SYS(5)+CURDIR()+[图片.JPG]
MESSAGEBOX("关闭")
_screen.RemoveObject("image1")
#12
吹水佬2022-08-25 15:51
以下是引用lnfx2019在2022-8-25 14:41:40的发言:




吹版的我还在调试,不知什么原因,image控件没能直接显示该图片呢

可能是文件路径问题
示例是将 图片转为base64字符串.txt 文件放到当前默认路径
#13
lnfx20192022-08-25 15:54
吹版的这行代码:
_screen.image1.PictureVal = STRCONV(FILETOSTR("图片转为base64字符串.txt"),14)

PictureVal  这个应该需要的是 二进制图片信息, 这块是不是涉及 把 “图片转为base64字符串.txt ” 由base64  再转回 二进制就可以了呢。
问题来了: 如何将 base64字符串 转为 二进制?
#14
吹水佬2022-08-25 16:11
以下是引用lnfx2019在2022-8-25 15:54:30的发言:

吹版的这行代码:
_screen.image1.PictureVal = STRCONV(FILETOSTR("图片转为base64字符串.txt"),14)

PictureVal  这个应该需要的是 二进制图片信息, 这块是不是涉及 把 “图片转为base64字符串.txt ” 由base64  再转回 二进制就可以了呢。
问题来了: 如何将 base64字符串 转为 二进制?

VFP9测试的,“图片转为base64字符串.txt”文件放到PRG当前目录。
只有本站会员才能查看附件,请 登录

#15
吹水佬2022-08-25 16:18
以下是引用lnfx2019在2022-8-25 15:54:30的发言:
问题来了: 如何将 base64字符串 转为 二进制?

VFP的“二进制”好多时是指数据在内存的存在形式(内码)
STRCONV(base64串,14)已经是转为实际的图片内码数据
#16
lnfx20192022-08-25 17:01
以下是引用吹水佬在2022-8-25 16:18:21的发言:


VFP的“二进制”好多时是指数据在内存的存在形式(内码)
STRCONV(base64串,14)已经是转为实际的图片内码数据


感谢吹版的指导,学到了!
#17
nbwww2022-08-26 18:08
这个不错  收藏一下
1