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

Использование

результат = BSave( filename, source [,[ size ][,[ pal ][, bitsperpixel ]]] )

Параметры

filename
Имя файла, создаваемого для хранения данных о пикселях и палитре.
source
адрес, по которому будут храниться данные или null (0) для хранения данный о пикселях рабочей страницы текущего экрана.
size
не обязательный, полное количество байтов данных для хранения. Это значение нужно только если файл не BMP.
pal
не обязательный, адрес буфера, содержащего Палитру из 256 цветов или null (0) для палитры текущего экрана.
bitsperpixel
не обязательный, запрашиваемая глубина битов для изображения файла BMP.

Возвращаемое значение

Возвращает ноль (0), если успешно или ненулевой ошибочный код, чтобы показать ошибку (сбой) (выкидывает ошибку времени выполнения (a runtime error))

Описание

BSave используется для сохранения произвольных данных из памяти в файл, используя формат файла, определённый в FB. Или же сохраняет изображения в стандартный файл изображений BMP, заменяя, если необходимо существующий файл.

BSave выводит полный (объём) size байтов произвольных данных, находящихся в source в определённый файл. Если source является null (0), то BSave выводит максимум size (объёма) байтов из текущего буфера пикселей рабочей страницы, который выстроен во внутренний формат пикселей текущего режима экрана. (Эти данные несовместимы с форматом буфера изображения, так как у него нет заголовка.) Для 8-битных изображений информация о палитре поступает из pal если существует и ненулевой. Или же если pal отсутствует или нулевой (null 0), поступает из палитры текущего экрана.

Изображение BMP можно создать, если у filename расширение ".bmp" (без учёта регистра). Предполагается, что source указывает на действительно имеющийся буфер изображения, у которого все данные о пикселях будут храниться в файле BMP. Если source пустой (null) (0), то вместо этого будет сохранено содержимое текущей рабочей страницы. Для 8-битных изображений информация о палитре будет получена из pal , если не пустая (non-null). Если же пустая (null) (0), будет получена из текущей палитры экрана. Параметр size при сохранении BMP файлов не будет учитываться.

По умолчанию глубина битов для BMP файлов - 8 битов для 8-битных изображений (палитры), 24 бита для 16-битных изображений и 32 бита для 32-битных изображений. Параметр bitsperpixel можно использовать для того, чтобы получить 24-битный результат для 8-битных изображений или 24-битный результат для 32-битных изображений.

Ошибки во время выполнения программы (runtime errors):
BSave выкидывает одну из следующих Ошибок во время выполнения программы:

(1) Illegal function call (неверный вызов функции)
    • size меньше нуля (0), или size равен нулю и source ненулевой (non-null), или обнаружена какая-то проблема с буфером изображения.
(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 "Hello world!"

' Сохранить как BMP
BSave "hello.bmp", 0


Отличия от QB

  • Поддержка сохранения более 64KiB случайных данных - новое в FreeBASIC.
  • Поддержка сохранения BMP файлов - новое в FreeBASIC.
  • QB не может использовать BLoad, чтобы загружать файлы, созданные с помощью BSave в FreeBASIC, но FreeBASIC может использовать BLoad, чтобы загружать файлы, созданные с помощью BSave в QB

См. также