Last Update : 2007/02/xx
画像ファイル(イメージファイル)を読み込んで、screen命令やbgscr命令で用意したウィンドウ上、あるいはbuffer命令で用意した仮想バッファ画面上に表示する命令です。命令名の由来は「picture load」から。
picload "画像ファイルパス", 読み込みモード
ハードディスク上の画像ファイルのパスを指定します。また、HSPのPACKFILE機能を利用して実行ファイル内に埋め込んだ画像ファイルを直接読み込めます。(HSP 3.2以降は、celload命令、celdiv命令、celput命令というものもあります。)
第1パラメータの読み込みモードは、新規に初期化したウィンドウに表示するデフォルトの「モード0」、現在のウィンドウに貼り付け表示する「モード1」です。モード0の場合は、ウィンドウが画像の大きさに合わせてサイズ変更されます。モード1の場合は、カレントポジションやpos命令が画像の左上位置として反映されます。
HSP3(HSP 3.x)のpicload命令で対応してる画像フォーマットは下のとおりです。HSP2時代のpicload命令とは変わってます。PNGファイル(*.png)やMAGファイル(*.mag)には対応してないので注意してください。(PNGファイルを利用したい場合は下参照)
対応フォーマット | 説明 |
BMP (*.bmp) | Windows標準のビットマップファイル。通常の無圧縮タイプの他に、RLE圧縮(ランレングス圧縮)が施されたビットマップファイルにも対応。 |
GIF (*.gif) | GIFファイル。透過GIFタイプにも対応。アニメーションGIFタイプは最初のフレームのみ表示。BMPファイルと比較してファイルサイズが小さい。 |
JPEG (*.jpg;*.jpeg) | JPEGファイル。BMPファイルと比較してファイルサイズが小さい。 |
アイコン (*.ico) | Windowsアイコンファイル。1アイコンファイルに複数のアイコンデータが含まれてるマルチアイコンタイプは1番目のアイコン画像のみ表示。 |
カーソル (*.cur) | Windowsカーソルファイル。アニメーションカーソル(*.ani)は不可。 |
WMF (*.wmf;*.emf) | Windowsメタファイル、拡張メタファイル。 |
◆ 無料ペイントソフト
画像ファイルの表示するサンプル。モード1なので、ウィンドウのサイズは変わりません。pos命令が表示位置として反映されます。
// 指定した画像ファイルを表示 button "画像", *load stop *load dialog "bmp;*.gif;*.jpg", 16, "画像ファイル" if stat = 0 : stop pos 50, 50 picload refstr, 1
◆ picload命令を無駄に何度も呼ばない
picload命令は、ハードディスク上、あるいはパックファイル内に画像ファイルを読みにいって、画像データを取得しイメージを表示する、という2段階の処理が行われます。repeat命令やgoto命令のループ内で、同じ画像ファイルを何回にも渡ってpicload命令する処理はとてもムダです。
最適な方法は、画像を仮想のバッファ画面(buffer命令)に1度きりのpicload命令で表示させておき、必要な部品はそのつどgcopy命令で切り出しコピーします。コピー処理は、拡大縮小コピーのgzoom命令、回転コピーのgrotate命令、方形コピーのgsquare命令もあります。
◆ picload命令はなるべく開始直後に呼ぶ
これはあくまでゲームプログラミングの面で言えることですが、処理のど真ん中でpicload命令を使うのはパフォーマンスを落とす原因になります。プログラムを起動した直後に必要な画像ファイルをpicload命令させておくのがポイントです。スピードを落としたくないところで、ハードディスク上の画像ファイルを読み込みにいったり、パックファイル内にアクセスする処理は避けましょう。
◆ たくさんの画像ファイルをムダに用意しない
HSP(HSP3)付属のサンプルで使われる「sample\demo\efx.bmp」、「sample\game\bom.bmp」、「sample\game\shootchr.bmp」、「sample\game\testchr.bmp」をチェックしてみてください。複数の部品が1つの画像ファイル内に収めてあります。たとえば、これをバラバラにしてpicload命令で画像ファイルを5回読み込むのと、1度のpicload命令と5回のgcopy命令ではパフォーマンスが異なります。(HSP
3.2以降は、celload命令、celdiv命令、celput命令というものもあります。)
◆ HSPのウィンドウ上に表示されてるイメージを画像ファイルとして保存するには?
画像ファイルの読み込みの逆パターン、画像ファイルを作成出力保存する方法です。HSPが標準命令で対応してるのは、BMPファイル(*.bmp)の保存を行うbmpsave命令だけです。それ以外の画像形式で保存したいならば、HSP拡張プラグインや汎用ライブラリを利用するのが一般的です。(→
参照、HSP Tips集 画像ファイルの表示)
◆ PNGファイルを読み込み表示するには?
picload命令が対応してないPNGファイルを扱うには、HSP拡張プラグインや汎用ライブラリを利用します。(→
参照、HSP Tips集 画像ファイルの表示)
また、HSP自体にPNGファイルを読み込むことができる「mod_img.as」モジュールが用意されてます。ただ、実行ファイルのパックファイル内のPNGファイルを直接読み込めない、アルファチャンネル付きPNGファイルは、パソコンに導入されてる「Internet
Explorer」のバージョンに依存する(参照)、制約があります。
◆ アニメーションGIFファイルを表示するには?
Susieプラグインを利用してフレームごとに単体GIFファイルとして分解するサンプルを自作ソフトにて公開してます。また、WindowsのMCI(mci命令)を利用してアニメーション再生させる方法もあります。(→
参照、HSP Tips集 画像ファイルの表示)
◆ 画像の大きさ(横幅・高さ)を知るには?
picload命令の読み込みモード0だと、画像の大きさ合わせてウィンドウがリサイズされるので、この時にginfo関数(タイプ12・13)を見る方法があります。また、画像ファイルのバイナリデータからヘッダー情報を取得する方法もあります。(→
HSP3 あれこれ ファイル編)