BSave
 
将一组任意数据和调色板信息保存到磁盘上的文件

语法

Declare Function BSave ( ByRef filename As Const String, ByVal source As Any Ptr, ByVal size As Integer = 0, ByVal pal As Any Ptr = 0, ByVal bitsperpixel As Integer = 0 ) As Integer

用法

result = BSave( filename , source [,[ size ][,[ pal ][, bitsperpixel ]]] )

参数

filename
要创建的用于存储像素和调色板数据的文??件的名称。
source
要存储的数据的地址,或null(0)来存储当前屏幕工作页面中的像素数据。
size
可选,要存储的数据的总字节数。此值是必需的,除非输出是BMP文件。
pal
可选的,当前屏幕调色板中的256个Palette颜色的缓冲区的地址,或null(0)。
bitsperpixel
可选的,输出BMP图像的请求位深度。

返回值

如果成功,则返回零(0),或者指示失败的非零错误代码。(throws a runtime error)

说明

BSave用于将任意数据从存储器保存到文件中,使用特定于FB的文件格式或将图像保存到标准BMP映像文件中,如有必要,替换现有文件。

BSave向位于source size size 个字节的任意数据输出总数到指定的文件。如果source 为空(0),则BSave从当前工作页的像素缓冲区中输出{{size }个size 个字节,以当前屏幕模式的内部像素格式结构。(该数据与图像缓冲区格式不兼容,因为它没有标题。)对于8位图像,调色板信息从pal 获取,如果存在且非空,或者pal 省略或为空({989796060 }),从当前的屏幕调色板。

如果filename 的文件扩展名为“.bmp”(不区分大小写),则可以创建BMP图像文件。假设source 指向其整个像素数据将存储在BMP文件中的有效图像缓冲区。如果source 为null(0),则将存储当前工作页面的内容。对于8位图像,调色板信息从pal 如果非空,或从当前屏幕调色板获取为null(0)。保存BMP文件时,size 参数将被忽略。

BMP文件的默认位深度为8位(调色板)8位,16位图像为24位,32位图像为32位。bitsperpixel 参数可用于请求8位图像的24位输出或32位图像的24位输出。

运行时错误:
BSave会抛出以下运行时错误之一:

(1) Illegal function call
    • size 小于零(0),否则size 为零,source 为非空,或者图像缓冲区检测到问题。
(2) File not found
    • 该文件无法创建。
(3) File I/O error
    • 该文件无法写入。

例子

'设置gfx模式
ScreenRes 320, 200, 32

'清除黑色的白色
Color RGB(0, 0, 0), RGB(255, 255, 255)
Cls

Locate 13, 15: Print "你好,世界!"

'另存为BMP
BSave "hello.bmp", 0


与QB差别

  • 支持节省超过64KiB的任意数据是FreeBASIC的新功能。
  • 支持保存BMP文件是FreeBASIC的新功能。
  • QB无法使用BLoad在FreeBASIC中加载使用BSave创建的文件,但FreeBASIC可以使用BLoad加载使用创建的文件BSave在QB

参考