FreeImage是一个开放源代码库项目,适用于当今多媒体应用程序需要支持流行图形格式(如PNG,BMP,JPEG,TIFF等)的开发人员。FreeImage易于使用,快速,多线程安全,兼容所有32位版本的Windows和跨平台(兼容于Linux和Mac OS X)。
网站:http://freeimage.sourceforge.net/
支持平台:Win32,Linux
标题包括:FreeImage.bi
标题版本:3.15.1
示例包括:是的,在examples / files / FreeImage中
例子
以下是FreeBASIC中使用FreeImage的示例。如果使用Windows,您将需要可以从
FreeImage网站获取的freeimage.dll。
''使用FreeImage加载所有常见图像类型的代码示例。
''该示例加载作为命令行参数传递的图像。
''函数FI_Load返回空指针(0),如果在此期间出现错误
''加载。否则返回一个32位PUT兼容缓冲区。
#include "FreeImage.bi"
#include "crt.bi"
#include "fbgfx.bi"
Function FI_Load(filename As String) As Any Ptr
If Len(filename) = 0 Then
Return NULL
End If
''找出图像格式
Dim As FREE_IMAGE_FORMAT form = FreeImage_GetFileType(StrPtr(filename), 0)
If form = FIF_UNKNOWN Then
form = FreeImage_GetFIFFromFilename(StrPtr(filename))
End If
''如果未知,则退出
If form = FIF_UNKNOWN Then
Return NULL
End If
''始终加载jpegs
Dim As UInteger flags = 0
If form = FIF_JPEG Then
flags = JPEG_ACCURATE
End If
''将图像加载到内存中
Dim As FIBITMAP Ptr image = FreeImage_Load(form, StrPtr(filename), flags)
If image = NULL Then
''FreeImage无法读取图像
Return NULL
End If
'' Flip the image so it matches FB's坐标系
FreeImage_FlipVertical(image)
''转换为每像素32位
Dim As FIBITMAP Ptr image32 = FreeImage_ConvertTo32Bits(image)
'' Get the image'的大小
Dim As UInteger w = FreeImage_GetWidth(image)
Dim As UInteger h = FreeImage_GetHeight(image)
''创建相同大小的FB图像
Dim As fb.Image Ptr sprite = ImageCreate(w, h)
Dim As Byte Ptr target = CPtr(Byte Ptr, sprite + 1)
Dim As Integer target_pitch = sprite->pitch
Dim As Any Ptr source = FreeImage_GetBits(image32)
Dim As Integer source_pitch = FreeImage_GetPitch(image32)
''并逐行复制像素
For y As Integer = 0 To (h - 1)
memcpy(target + (y * target_pitch), _
source + (y * source_pitch), _
w * 4)
Next
FreeImage_Unload(image32)
FreeImage_Unload(image)
Return sprite
End Function
ScreenRes 640, 480, 32
Dim As String filename = Command(1)
Dim As Any Ptr image = FI_Load(filename)
If image <> 0 Then
Put (0, 0), image
Else
Print "加载文件时出现问题:" & filename
End If
Sleep