HSP命令講座 <bmpsave命令>

Last Update : 2009/01/xx

PR 話題のPCゲームをチェック!

bmpsave命令 (ウィンドウ画面をBMP形式で保存)

 HSPの画面を画像ファイルとして出力保存する命令です。命令名の由来はそのまま「bmp save」から。

 保存対象となる画面は、HSPのscreen命令やbgscr命令で用意したウィンドウ画面のクライアントエリア部分、またはbuffer命令で用意した仮想バッファ画面だけです。HSPと無関係なウィンドウ画面は保存できません。保存形式は、無圧縮のWindowsビットマップファイル(*.bmp)になります。

 bmpsave "ファイルパス・ファイル名"

 パラメータは出力保存するファイル名やファイルパスを指定します。パスの区切り「\」は「\\」で表現することになるので注意してください。また、拡張子の「*.bmp」も指定する必要があります。すでに指定したファイルが存在する場合は、そのまま上書き保存されます。

 なお、HSPのウィンドウに設置したボタン(button命令)、メッセージボックス(mesbox命令)、リストボックス(listbox命令)などのGUIオブジェクト、winobj命令やaxobj命令で用意したコントロールは、画像イメージとして保存されません。保存対象となるのは、mes命令、pset命令、line命令、boxf命令、circle命令のような描画処理命令で描かれたもの、picload命令で表示させたイメージだけです。

 ちなみに、HSPが標準でサポートしてる画像保存機能は、このbmpsave命令だけです。GIFファイル、JPEGファイル、PNGファイルなどの画像イメージ形式で出力したい場合は、HSP拡張プラグインや汎用ライブラリを利用する必要があります。(→ HSP Tips 画像関連のプラグイン一覧

○ スクリーン画面・ウィンドウ画面のキャプチャ
 モニタのスクリーン画面、ウィンドウ画面そのもののスクリーンショットを保存(キャプチャ)したい場合は、Win32 API関数を呼ぶ必要があります。ちょくとさんのページ「Advanced HSP」の「スクリーンキャプチャ」・「ウィンドウキャプチャ」をチェック!

↑TOP↑

サンプルコード

 bmpsave命令には出力ファイルパスを指定するパラメータしか存在しません。そのため、保存する画像データの基点(左上)、X方向・Y方向は必ず0です。そして、保存する範囲(サイズ)は用意した画面の大きさに依存します。

 たとえば、下のコードはpicload命令でモード1指定(現在の画面にそのまま表示)を行ってるので、必ず640x480サイズの画像ファイルが出力されます。

//	テキスト文章をBMPファイルで保存

;	テキストファイルを読み込む
	notesel buf
	noteload "readme.txt"

;	背景色
	color , $FF
	boxf

;	文字表示
	color , , $FF
	mes buf

;	画像ファイル出力
	bmpsave "C:\\hogehoge.bmp"
	title "保存!"
//	「BMP/GIF/JPEG to BMP」の変換

;	ファイル選択ダイアログ
	dialog "bmp;*.gif;*.jpg", 16, "画像ファイル"
	if stat = 0 : stop

;	画像を表示
	picload refstr, 1

;	画像ファイル出力
	bmpsave "C:\\hogehoge.bmp"
	title "保存!"

 もし、画像の一部分を保存したい場合は、buffer命令で仮想のバッファ画面を用意しておき、いったんそこに保存に必要なイメージをgcopy命令、gzoom命令、gsquare命令などで切り出しコピーしてbmpsave命令する形になります。(画面の操作先を切り替えるにはgsel命令を利用)

//	HSPの画面の一部をBMPファイルで保存

	notesel buf
	noteload "readme.txt"

	color , $FF
	boxf

	color , , $FF
	mes buf

;	仮想画面を用意
;	(操作先が仮想画面1に移動)
	buffer 1, 300, 300

;	ウィンドウID0から切り出しコピー
	gcopy 0, 50, 50, 300, 300

	bmpsave "C:\\hogehoge.bmp"

;	操作先をウィンドウID0に戻す
	gsel 0

	title "保存!"
	dialog "bmp;*.gif;*.jpg", 16, "画像ファイル"
	if stat = 0 : stop

	picload refstr
	imgsize = ginfo(12), ginfo(13) ; 画像サイズ取得

;	仮想画面を用意
	buffer 1, imgsize.0, imgsize.1

;	上下反転コピー
	pos 0, imgsize.1
	gzoom imgsize.0, -imgsize.1, 0, 0, 0, imgsize.0, imgsize.1

;	画像ファイル出力
	bmpsave "C:\\hogehoge.bmp"

	gsel 0

	title "保存!"

↑TOP↑

〜HSP3 あれこれ〜
ウィンドウ | オブジェクト | ファイル | フォルダ | キーボード | マウス | メニュー | システム | 文字列 | COM | その他

Copyright © 2005-2011 ゲーム作成ソフトHSPの情報をいろいろと Let's HSP!. All rights reserved.