注册 登录
编程论坛 VB6论坛

vb如何使用freeimage显示图片

macalwen 发布于 2023-11-09 22:33, 1388 次点击
vb如何用Freeimage这个图像库显示图片,用代码表示,一定是能正确运行的,包括具体库的配置。
5 回复
#2
yuma2023-11-10 11:34
要在VB中使用FreeImage库显示图片,您需要首先下载并正确配置FreeImage库。然后,您可以在VB中使用DLL引用将FreeImage库添加到您的项目中。

以下是使用FreeImage库显示图片的VB代码示例:

Imports  FreeImage

Module  FreeImageExample

     Sub  Main()
         Dim  fi  As  New  FreeImage.FreeImage
         Dim  fd  As  FreeImage.Image
         Dim  fd2  As  FreeImage.Image
         Dim  fd3  As  FreeImage.Image
         
         '  打开图片
         fd.Open("C:\Images\test.jpg")
         
         '  读取图片数据
         fd2  =  fd.Read()
         
         '  显示图片
         fd3.Show()
         
         '  关闭图片
         fd.Close()
     End  Sub

End  Module
在上面的代码中,我们首先导入了FreeImage库,然后在Main子程序中创建了一个FreeImage对象,并使用该对象打开了一张图片。接着,我们使用Read方法读取了图片数据,并将其显示在窗体上。最后,我们关闭了图片。

请注意,上面的代码中,我们使用了三个FreeImage对象:fd、fd2和fd3。其中,fd用于打开和关闭图片,fd2用于读取图片数据,fd3用于显示图片。这些对象都是FreeImage库中的类,您可以在代码中使用它们来完成不同的任务。

要配置FreeImage库,请按照以下步骤操作:

下载FreeImage库
将FreeImage库文件(例如FreeImage.dll)复制到您的项目文件夹中
在VB中使用DLL引用将FreeImage库添加到您的项目中。
请注意,FreeImage库支持多种图像格式,例如JPEG、PNG、BMP等。在上面的代码中,我们使用了JPEG格式的图片。如果您要使用其他格式的图片,请将文件路径替换为相应的文件路径。
#3
macalwen2023-11-10 21:58
无法引用freeimage.dll ,不能将引用加入到指定文件。怎么回事
#4
yuma2023-11-11 06:45
在VB6中引用DLL文件需要确保以下几点:

DLL位于系统路径或者应用程序路径: 确保freeimage.dll 位于系统路径(例如 C:\Windows\System32)或者应用程序的路径。或者,您可以将其路径添加到系统的 PATH 环境变量中。

正确的DLL版本: 确保您使用的是与您的 VB6 应用程序兼容的 freeimage.dll 版本。

注册 DLL: 如果 DLL 是 COM DLL,您可能需要在系统上使用 regsvr32 注册 DLL。在命令提示符下执行:
regsvr32 C:\path\to\freeimage.dll

确保用实际的 DLL 路径替换上述命令中的 C:\Windows\System32\freeimage.dll。

引用 DLL: 在 VB6 中,您可以通过以下步骤引用 DLL:

打开 VB6 项目。
转到 "Project" 菜单,然后选择 "References"。
在弹出的对话框中找到 freeimage.dll,选中它,然后点击 "OK"。
检查 DLL 导出函数: 确保 DLL 中包含的函数与您在 VB6 代码中尝试调用的函数匹配。您可以使用工具(如 Dependency Walker)检查 DLL 中的导出函数。

如果上述步骤中的任何一项出现问题,您可能需要重新下载正确版本的 DLL,确保它是您的 VB6 环境所需的版本,并且正确注册。

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

#5
macalwen2023-11-12 08:57
根据我的测试发现vb只能读取MFreeimage.bas中的函数,dll它找不到函数入口。
#6
约定的童话2023-11-13 20:14
2,4楼是chatgpt答案,不保证可运行,需要调试
在VB6.0中使用FreeImage库来显示图片,您需要按照以下步骤进行操作:

下载并安装FreeImage库:

前往FreeImage官方网站(https://freeimage.)下载适用于您的操作系统的库文件。
解压下载的文件并将库文件复制到您的项目文件夹中。
配置项目以使用FreeImage库:

在VB6.0中,打开您的项目。
选择“项目”菜单,然后选择“组件”。
在“组件”对话框中,点击“浏览”按钮并选择您复制的FreeImage库文件。
添加组件后,您可以在工具箱中看到FreeImage控件。
创建一个新的VB窗体应用程序,并添加以下代码:

Option Explicit

Private Sub Form_Load()
    Dim filename As String
    Dim bitmap As Long
    Dim width As Long
    Dim height As Long
    Dim bits As Long
   
    ' 图片文件路径
    filename = "image.png"
   
    ' 加载图片
    bitmap = FreeImage_Load(FreeImage_GetFileType(filename, 0), filename, 0)
   
    ' 将图片转换为32位位图,方便处理
    FreeImage_ConvertTo32Bits bitmap
   
    ' 获取图片宽度和高度
    width = FreeImage_GetWidth(bitmap)
    height = FreeImage_GetHeight(bitmap)
   
    ' 获取图片像素数据
    bits = FreeImage_GetBits(bitmap)
   
    ' 创建一个新的位图并设置像素数据
    Picture1.AutoRedraw = True
    Picture1.Width = width
    Picture1.Height = height
    Picture1.ScaleMode = vbPixels
    BitBlt Picture1.hDC, 0, 0, width, height, bits, 0, 0, vbSrcCopy
   
    ' 释放资源
    FreeImage_Unload bitmap
End Sub
以上代码将加载并显示指定路径的图片。您只需根据您的实际情况将filename变量的值更改为您要显示的图片文件的路径。此外,代码中使用了Picture1控件作为容器来显示图片。

注意:在VB6.0中,您需要使用API函数来操作FreeImage库。确保在代码模块中添加以下API函数声明:

Private Declare Function FreeImage_Load Lib "FreeImage.dll" (ByVal format As Long, ByVal filename As String, ByVal flags As Long) As Long
Private Declare Sub FreeImage_Unload Lib "FreeImage.dll" (ByVal bitmap As Long)
Private Declare Function FreeImage_GetFileType Lib "FreeImage.dll" (ByVal filename As String, ByVal size As Long) As Long
Private Declare Sub FreeImage_ConvertTo32Bits Lib "FreeImage.dll" (ByVal bitmap As Long)
Private Declare Function FreeImage_GetWidth Lib "FreeImage.dll" (ByVal bitmap As Long) As Long
Private Declare Function FreeImage_GetHeight Lib "FreeImage.dll" (ByVal bitmap As Long) As Long
Private Declare Function FreeImage_GetBits Lib "FreeImage.dll" (ByVal bitmap As Long) As Long
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
请确保您已将FreeImage.dll库文件复制到项目文件夹中,并将其与VB6.0项目关联。
1