注册 登录
编程论坛 VB6论坛

手机上下载的JPG图片,Picture和Image都加载显示不了?

itpingtai 发布于 2023-10-25 13:08, 1949 次点击
VB如何写代码才能格式化这些图片,转成能够显示的JPG或BMP图,类似格式化工厂……
16 回复
#2
yiyanxiyin2023-10-25 13:14
后缀是jpg不一定就是jpg, JPG格式图片的判断依据是第一个字节和第二个字节的数据是0xff和0xd8,倒数第一个和倒数第二个字节数据分别是0xd9和0xff,如果都对,那么判断此数据为jpg图片数据!

先确定你的图片是否是jpg
#3
风吹过b2023-10-25 18:51
你先搞定 windows 自带的看图软件能打开 这种的 jpg 再说吧。VB6 自己可能 没有能力搞定。
据说是 颜色管理 方面的问题,存在问题的文件一般是 使用 微信直接拍的照才有这个问题。

我一般使用 格式工厂 转换下格式,只需要 JPG>JPG 转换一下。

#4
itpingtai2023-10-25 19:18
回复 2楼 yiyanxiyin
确定是JPG,比如今日头条,手机上是可看到JPG图片的,但在电脑里不行,VB的Picture和Image也看不了,用格式化工厂转换一下,电脑就可以看了
#5
itpingtai2023-10-25 19:21
回复 3楼 风吹过b
这个方法是知道的,我现在想用VB写代码,自个实现格式化工厂的功能,让手机上的图片在电脑VB中也能看到。
#6
macalwen2023-10-30 19:31
用16进制编辑器查看两个文件有什么不同?然后把不同的地方改过来。可以自己编程解决。
#7
yuma2023-10-30 19:43
程序代码:
Private Sub Form_Load()
Const wiaFormatJPEG = "{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}"
Set IMG = CreateObject("WIA.ImageFile")
Set IP = CreateObject("WIA.ImageProcess")
IMG.LoadFile "test.bmp"
IP.Filters.Add IP.FilterInfos("Convert").FilterID
IP.Filters(1).Properties("FormatID").Value = wiaFormatJPEG
Set IMG = IP.Apply(IMG)
IMG.SaveFile "test.jpg"
End Sub


BMP转JPG格式,支持BMP PNG GIF JPEG TIFF 互转。请指定文件保存的具体路径。

上面哥们总是这不行,那不行的。

[此贴子已经被作者于2023-11-5 19:18编辑过]

#8
itpingtai2023-10-31 11:35
回复 7楼 yuma
只有本站会员才能查看附件,请 登录


附件中的文件是从手机今日头条上下载下来的,VB中的Picture是无法显示的。
用格式化工厂转化一下,就可以用了。

VB代码如何写,才可以转化成VB可以用Picture显示的JPG文件?
#9
yuma2023-10-31 11:50
你这个图片不是真实的jpg格式。BMP格式和JPG格式,我这边picture控件都能加载。

检测了一下直实的文件格式,结果如下:

= RESTART: C:\Users\Admin\Downloads\1.py
123.jpg
File extension: webp
File MIME type: image/webp

这个图片真实的文件格式是:123.webp,所以你的Picture控件加载不了它。

只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2023-10-31 12:27编辑过]

#10
yuma2023-10-31 12:24
程序代码:
Private Sub Form_Load()
Const wiaFormatBMP = "{B96B3CAB-0728-11D3-9D7B-0000F81EF32E}"
Set IMG = CreateObject("WIA.ImageFile")
Set IP = CreateObject("WIA.ImageProcess")
IMG.LoadFile "D:\Demo\123.jpg"
IP.Filters.Add IP.FilterInfos("Convert").FilterID
IP.Filters(1).Properties("FormatID").Value = wiaFormatBMP
Set IMG = IP.Apply(IMG)
IMG.SaveFile "D:\Demo\123.bmp"
Dim pp As StdPicture
Picture1.AutoRedraw = True
Set pp = LoadPicture("D:\Demo\123.bmp")
Picture1.PaintPicture pp, 0, 0, Picture1.Width, Picture1.Height
End Sub



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

#11
itpingtai2023-10-31 14:07
回复 10楼 yuma
只有本站会员才能查看附件,请 登录


怎么代码报错呀
#12
yuma2023-10-31 18:07
你的原图片是webp格式的,不是你改为jpg它就是jpg格式的,上面说了。

Picture控件支持jpg和BMP格式的,上面代码只是演示一下图片格式转换和Picture控件加载图片。

再重复说一遍,你原图的真实格式是webp格式的,所以你无法用picture控件加载你那个123.jpg

这个是编辑之后保存为jpg格式的,你试一下。

只有本站会员才能查看附件,请 登录


只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2023-10-31 18:12编辑过]

#13
itpingtai2023-10-31 18:19
回复 12楼 yuma
意思已经明白了,就是文件的格式不是真正的JPG文件。

现在想知道的是,VB如何写代码将webp图片转为JPG文件。
#14
yuma2023-10-31 18:24
回复 13楼 itpingtai
试一下这个:

Const wiaFormatWEBP = "{B96B3CB2-0728-11D3-9D7B-0000F81EF32E}"
#15
itpingtai2023-10-31 18:59
回复 14楼 yuma
还是报错,什么参数错误
#16
yuma2023-10-31 19:08
你的原图片格式不正确导致。
#17
itpingtai2023-10-31 19:27
回复 16楼 yuma
现在的问题:

不是知道不知道图片的格式,

是如何用VB代码将这种webp图片格式转为正常JPG的图片。

1