HSPから画像ファイル「PNG」の読み込み表示

ONION softwareさん製作のWindows向けプログラミング言語『HSP』(Hot Soup Processor)は、スクリプト上でpicload命令を使って画像ファイルを表示させることができます。

HSP3のpicload命令の対応フォーマットは、BMPファイル、JPEGファイル、GIFファイル、ICOファイル、CURファイルといったところで、PNGファイルには対応してません。(ちなみに、HSP2ではBMPファイル、JPEGファイル、MAGファイルに対応)

Portable Network Graphics

PNGの公式サイト 一昔前、GIFファイルの圧縮アルゴリズムに関する特許の存在で、GIFファイルを扱うプログラムは特許料を支払わなければならない恐れがありました。これによりシェアウェアや製品ウェアを除いてGIFファイルを扱えるフリーウェアは全滅。
 この時、GIFファイルにとってかわる完全フリーな画像形式としてPNG(公式サイト)が生み出されたわけです。(ここらへんはWikipedia参照)

HSP2時代にpicload命令がGIFファイルに対応してなかった、あるいはGIFファイルを扱えるHSP拡張プラグインというのが存在しなかったのはこのためです。HSP3になって標準のpicload命令がGIFファイルをサポートしたのは、この特許が2004年に失効していたため。

さて、picload命令でPNGファイルの読み込み表示には対応してません。というのも、仮に標準で対応するとなるとHSPが作成できるコンパイル済み実行ファイルのサイズに100%響くためです。

PNGファイルというのは画像データそのものが圧縮されてるため、ファイルサイズが小さいんです。当然ながら、そのPNGファイルを読み込んで画像を表示するには、圧縮されたデータを内部で展開する必要がでてきます。
 PNGファイルは「zlib」というフリーの圧縮アルゴリズムを採用しており、このためのライブラリを実行ファイル内に組み込まなければならないので、要はその分で実行ファイルのサイズがもっとでかくなります。

HSPでPNGファイルを扱うには基本的にHSP拡張プラグインを利用します。かつてGIFファイルの特許問題が存在していた関係で、PNGファイルの読み込み表示が可能な専用のプラグインがたくさんリリースされてます。
 また、HSPのウィンドウ上に表示されているイメージを逆にPNGファイルとして作成出力保存する機能を実装したHSP拡張プラグインも存在します。

→ 参考:画像ファイル関連のHSP拡張プラグイン

ちなみに、PACKFILE(パックファイル)として実行ファイル内に埋め込んだPNGファイルを直で利用できるHSP拡張プラグインも中にはあります。
 ただ、拡張プラグインそのもの(DLLファイル自体)を実行ファイルに埋め込むことは不可能なので注意してください。(正確に言うと不可能ではないが意味がない)

★ mod_img.asモジュール

HSP3には、「common\mod_img.as」というモジュールも用意されてます。
 「imgload」というモジュール命令で、ブラウザの「Internet Explorer」のために用意されてる「IImgCtx」インターフェースをモジュール内で呼んでおり、これはBMPファイル、JPEGファイル、GIFファイル、ICOファイルをはじめ、PNGファイルやTIFFファイルの読み込み表示も可能です。付属サンプルは「sample\new\imgload.hsp」 (HSP 3.2〜では「sample\comobj\imgload.hsp」)です。

#include "mod_img.as"

	dialog "bmp;*.gif;*.jpg;*.png", 16
	if stat = 0 : stop

;	相対パスだと自分自身の傘下フォルダの画像ファイルのみ読み込める
	imgload refstr

いちおうIE用なだけあって、(もちインターネットに接続されてる必要がありますが)URLアドレスもOKだったりします。

#include "mod_img.as"

	imgload "http://tech.g1.xrea.com/pic/hsp-logo.png"

	pos , 100
	gzoom 200 * 2, 84 * 2, 0, 0, 0, 200, 84

ただ、このモジュール命令は、HSPのpicload命令と違ってPACKFILE(パックファイル)内の画像ファイルは直で利用できません。 基本的にハードディスク上に存在する画像ファイルだけ読み込めます。
 あと、PNGファイルのアルファチャンネル(αPNG・透過PNG・半透明PNG)の対応は、 パソコンに導入されてる「Internet Explorer」のバージョンに依存します。(Microsoftがこれに対応させたのはIE7〜

キーワード de HSP

HSPミニ講座

★ Yahoo!経由用ページ : ファイル | フォルダ | メニュー | マウス | ウィンドウ | オブジェクト | 文字列 | システム | 関数 | sendmsg命令 | その他 | サイトマップ | リンク