任意のデータとパレット情報の配列を、ディスクのファイルに保存します。
構文:
用法:
result = Bsave( filename, source [,[ size ][,[ pal ][, bitsperpixel ]]] )
パラメタ:
filename
画素とパレットデータを保存するために作成するファイルの名前。
source
保存するデータのアドレス、または現在の画面の作業中のページからのピクセルデータを保存するヌル (0)。
size
オプションで、保存するデータのバイトの総数。
もし出力が BMP ファイルでなければ、この値は必要です。
pal
オプションで、256
Palette 色を保持するバッファーのアドレス。あるいは現在の画面パレット用のヌル (
0)。
bitsperpixel
オプションで、BMP 画像出力用の、要求されたビット深度。
bitsperpixel を指定する場合は、pal も指定する必要があります(少なくともnull (0) 値)。指定しないと、エラーが発生します。
戻り値:
うまくいくと、戻り値はゼロ (
0) です。あるいは、失敗内容を示す、ゼロでないエラー・コードです。
エラー処理 を参照下さい。
説明:
Bsave は、メモリの任意のデータを、ファイルの中に保存するために使います。FB 固有のファイル形式を使うか、または標準の BMP 画像ファイルに、画像を保存します。必要なら、既存ファイルを置き換えます。
Bsave は、描画モードが初期化されている場合にだけ呼び出す必要があります。そうしないと、プログラムがクラッシュします。
(テキストモードで使いたいときは、
BLOAD/BSAVE テキスト・モードを使う を参照してください)。
Bsave は、指定されたファイルに、ソースに位置する任意のデータのバイト size の 合計 を出力します。
source がヌル (0) なら、Bsave は現在、作業中のページの画素バッファから、最大 バイト size を出力します。これは現在の画面モードの内部の画素形式で構築されます。
(このデータは、画像バッファ形式と互換性を持ちません。ヘッダがないからです。)
8ビット画像のため、パレット情報は、pal が存在してヌルでないなら、pal から取得します。pal がないか、ヌル (0) なら、現在の画面パレットから取得します。
filename が、ファイル拡張子 ".bmp" (大文字・小文字を区別しない)の場合、BMP 画像ファイルを作成することができます。
source は、その全画素データが BMP ファイルに保存される有効な画像バッファーを指すと仮定されます。
source がヌル (0)ならば、現在の作業ページの内容が、代わりに格納されます。
8ビットの画像については、ヌルでない場合、pal から取得します。ヌル (0) の場合、現在の画面パレットから取得します。
BMPファイルを保存する場合、size パラメータは無視されます。
BMP ファイル用のデフォルト・ビット深度は、8ビット(パレット)の画像のための 8ビット、16ビットの画像のための 24ビット、および 32ビットの画像のための 32ビットです。
bitsperpixel パラメーターは、8ビットの画像のための 24ビットの出力、あるいは32ビットの画像のための 24ビットの出力を要求するために、使うことができます。
Bsave が返すエラーコードは、次の行の
Err を使って確認できます。
Bsave の関数バージョンは、直接エラーコードを32ビット
Long で返します。
実行時エラー:
Bsave は、次の
エラー処理 のうちの1つを投げます:
(1) 不正な関数呼び出し
-
size は 0 未満か、あるいは size が 0 です。そして、source はヌルではありません。
あるいは、問題が、画像バッファーで検知されました。
(2) ファイルが見つかりません
(3) ファイル I/O エラー
例:
注意:FreeBASIC 1.08〜 で、SetEnviron を追加しなくても、日本語環境で描画画面が表示されるように改善されました。
' Sets the graphics method GDI
' 描画方法を GDI に設定
SetEnviron("fbgfx=GDI")
' Set gfx mode
ScreenRes 320,
200,
32
' Clear with black on white
Color RGB(0,
0,
0),
RGB(255,
255,
255)
Cls
Locate 13,
15:
Print "Hello world!"
' Save screen as BMP
BSave "hello.bmp",
0
画像バッファをビットマップ・ファイルに保存する:
' Sets the graphics method GDI
' 描画方法を GDI に設定
SetEnviron("fbgfx=GDI")
'set graphics screen 640 x 480 pixels, 32 bit colors
Const W =
640, H =
480 'width & hight
ScreenRes W, H,
32
'画面中央に笑顔を描く
Circle (W \
2, H \
2),
180, &h00ffff00, , , , f
'黄色の円
Circle (W \
2 -
55, H \
2 -
70),
35, &h00000000, , ,
1.5, f
'左眼
Circle (W \
2 +
55, H \
2 -
60),
35, &h00000000, , ,
1.5, f
'右眼
Circle (W \
2, H \
2 +
80),
70, &h00000000, , ,
0.4, f
'口
'画像バッファにメモリを割り当てる
Dim As Any Ptr pImageBuffer =
ImageCreate(250,
250)
'画面セクションをバッファにコピー
Get (W \
2 -
125, H \
2 -
125)-
Step(250 -
1,
250 -
1), pImageBuffer
'画像バッファをファイルに保存
Dim As String fileName =
"Smiley.bmp"
If BSave(fileName, pImageBuffer
) =
0 Then
Print "Saved succesful: " + fileName
Else
Print "Error saving: " + fileName
End If
'画像バッファ用のメモリを解放
ImageDestroy(pImageBuffer
)
'キーを押すまで描画画面を開いたままにします
Sleep
QBからの違い:
- FreeBASIC では、新機能として、64KiB 以上の任意のデータの保存ができます。
- BMPファイルを保存できるのは、FreeBASIC の新機能です。
- QB は、FreeBASIC の Bsave で作成されたファイルをロードするのに Bload を使えません。
FreeBASICは、QB の Bsave で作成されたファイルをロードするのに Bload を使用できます。
参照: