注意:我不是VB6程序员 - 我是一名Android程序员,负责制造中使用的应用程序,我有一位同事负责与我的Android设备对话的VB6程序。
过去我们的VB6程序将Microsoft .bmps发送到Android设备,但现在我们正在为我们的产品列表添加平板电脑,并希望发送更大的图像以利用平板电脑的额外房地产我们发现.bmp太大了,堵塞了网络。
最终我们用.Net替换旧的VB6产品,但在我们做之前,VB6是否有办法以编程方式将位图转换为JPEG?我的同事不知道一个,但我总是找到S.O.在我的域(Android,.Net)中非常有用,所以我想我在这里尝试VB6问题。
答案 0 :(得分:4)
这可以从文件或字节数组接受.BMP甚至原始Windows 24位像素位图(加上宽度和高度)并将它们转换为JPEG,从而生成文件或字节数组结果。
该库是Windows现代版本的一部分,但可以安装到WinXP(SP1或更高版本)中。
简单的文件到文件示例:
Dim ImgF As WIA.ImageFile
Dim ImgP As WIA.ImageProcess
Set ImgF = New WIA.ImageFile
ImgF.LoadFile "Zapotec.bmp"
Set ImgP = New WIA.ImageProcess
With ImgP
.Filters.Add .FilterInfos!Convert.FilterID
.Filters.Item(1).Properties!FormatID.Value = wiaFormatJPEG
.Filters.Item(1).Properties!Quality.Value = 70
Set ImgF = .Apply(ImgF)
End With
ImgF.SaveFile "Zapotec.jpg"
答案 1 :(得分:0)
MarkJ上面的链接值得一看,但这里还有其他三个想法:
FreeImage是一个开源库;有一个下载,其中包含一个可供VB6使用的DLL。
VB Helper链接是指通过VB.NET DLL从VB6使用.NET的文章。
最后,MVPS链接是VB6代码,用于使用GDI +将图像保存到JPG。
答案 2 :(得分:0)
是的,它可以!在Planet source Code上看到这个出色的贡献
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=50065&lngWId=1
答案 3 :(得分:0)
Bob77的优秀答案让我走上正轨,但下载链接已不再可用。自Vista以来,微软已经在Windows中加入了WIA支持。
有关详细信息,请参阅Microsoft's Windows Image Acquisition Automation Layer page。
我发现代码片段的初始部分需要调整以引用捆绑的WIA类,现在称为WIACtl。
Dim ImgF As WIACtl.ImageFile
Dim ImgP As WIACtl.ImageProcess
Set ImgF = New WIACtl.ImageFile
ImgF.LoadFile "Zapotec.bmp"
Set ImgP = New WIACtl.ImageProcess