FreeBASIC マニュアルのトップに戻る

FreeBASIC Bsave

目次→描画ライブラリ参考→2次元 描画関数BSAVE←オリジナル・サイト

BSAVE 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

任意のデータとパレット情報の配列を、ディスクのファイルに保存します。

構文:
declare function Bsave ( byref filename as const string, byval source as any ptr, byval size as ulong = 0, byval pal as any ptr = 0, byval bitsperpixel as long = 0 ) as long

用法:
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) 不正な関数呼び出し
(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

Bsave 画像バッファをビットマップ・ファイルに保存する:
' 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からの違い:

参照:

2次元描画関数に戻る

←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2021-09-14 07:48:24
日本語翻訳:WATANABE Makoto、原文著作者:SysOp

ホームページのトップに戻る

表示-非営利-継承