目次

画像データ入力と表示

 HSPで、既存の画像フォーマットでファイルから
 データを入力し、表示するのは簡単です。

 HSPのロゴが入ったファイル(hsp3ttl.jpg)を入力し
 続けて表示するには、次のように記述します。
---------------------------------------------
 picload "hsp3ttl.jpg"
 stop
---------------------------------------------

 これだけで、ファイルのサイズ、ファーマットを気に
 しないで、画像データを表示できます。

 「picload」は、「picture load」を略した命令でしょう。
 この命令が優れているのは、画像データの拡張子を指定
 すれば、それでJPEG、GIF等を自動判定してくれること。

 タイプ量が少なく、機能をイメージしやすい名称に
 使いやすさが感じられます。


テキストファイルの画像データ入力と表示

 テキストファイルの数値データが、モノクロ画像を表して  いるという条件で、画面に画像データを表示してみます。  HSPでは、テキストファイルの内容を読み込んで  メモリに展開するには、組込みプロシージャの   noteload  を使います。  「noteload」は、「note load」でしょうが  「text load」の方が理解しやすいのではと  感じました。  ただし、展開先のメモリを確保しておかないとエラーで停止します。  転送先メモリの確保は、組込みプロシージャの   notesel  を使います。  この2つの組込みプロシージャを使えば、次のようにテキストの画像  データを、mlogy01j.txtから入力するコードを書けばよいとわかります。 ---------------------------------------------  dim src,320  notesel sbuf  noteload "mlogy01j.txt"  stop ---------------------------------------------  画像データを、表示するためにウィンドウのサイズを決めて  おく方が、わかりやすくなるので、幅と高さを指定します。  (この場合は、幅80ピクセル、高さが60ラインです。) --------------------------------------------- ;========================================  screen 0,80,60 ;========================================  dim src,320  notesel sbuf  noteload "mlogy01j.txt"  stop ---------------------------------------------  テキストデータは、文字列で確保されているので
  1. 1ライン分のデータを取り出し
  2. ターゲット文字列を取り出し
  3. 文字列から整数に変換し
  4. 色を決めて
  5. 点を打つ
 というシーケンスで1ラインの表示ができます。  1ライン分のデータの取り出し    文字列の中から、改行コードまでのデータを    取得するための組込みプロシージャは     noteget    を使います。    srcに、j番目の行をすべて取得する場合、次のように記述。     noteget src,j  ターゲット文字列の取り出し    文字列から、ターゲット文字列を、文字数指定で    取得するには、次の組込みプロシージャを利用。     strmid    BASICのmid$に似ています。strが「string」の略で、midが「mid$」に    相当すると見れば、納得できるプロシージャ名です。  文字列から整数への変換    文字列→整数は、次の組込み関数を利用。     int  色を決める    HSPは、WindowsのRGB形式で1ピクセルの色を表現します。    RGBは、各々0〜255の数値で、HTMLの仕様に似てますね。    モノクロ画像の表示は、RGBをすべて同じ数値に設定。    色を指定する、組込みプロシージャは、次の命令を利用。     color    モノクロ画像では、同じ数値vを指定します。     color v,v,v  点を打つ    点を打つ、組込みプロシージャは「point set」で     pset    使います。    点の色は、colorで指定した値が使われます。  ここまでの知識で、モノクロ画像データを表示できます。  繰返し指定のforを利用したいので  hspext.asをインクルードします。  全体では、次のように記述。 ---------------------------------------------  #include "hspext.as" ;========================================  screen 0,80,60 ;========================================  dim src,320 ;========================================  ylast = 60  xlast = 80 ;======================================== ; select string buffer ;========================================  notesel sbuf ;======================================== ; get contexts of text ;========================================  noteload "mlogy01j.txt" ;======================================== ; draw picture ;========================================  ; line direction  for j,0,ylast,1   ; get 1 line   noteget src,j   ; pixel direction   for i,0,xlast,1    ; get datatum    v = int(strmid(src,4*i,3))    ; set color    color v,v,v    ; show    pset i,j   next  next  stop ---------------------------------------------  上のコードを実行すると、次の画像が表示されます。  テキストファイルに格納された画像情報を  RGB形式の点の集合と考え、画面に表示する  と、ImageMagicのようなアプリを使わない  で済ませられます。

目次

inserted by FC2 system