目次

画像表示

 TeraTermで取得できるのは、テキストデータなので、取得画像を
  画面表示するには、JPEG形式やGIF形式にしなければなりません。

 HSPでテキストデータを画面表示するかと考えましたが、プログラム
 作成に時間をかけたくないので、既存の変換ソフトを使います。

 UNIXであれば、画像変換ソフトの定番はImageMagick。

 WindowsでもImageMagickを使えるのがわかったので、ダウンロード
 して、インストールしました。

 画像データを、ImageMagickのconvertで処理できる形式にするため
 テキストエディタでPGM形式ファイルを作成します。

 PGM形式ファイルは、文字列になっているテキストデータにヘッダを
 付加すれば、テキストエディタで処理できます。

 今回は、128ピクセルx128ラインのデータで、256階調としたので
 ヘッダは、次の3行になります。
    P2
    128 128
    255
 1行目には、PGM形式でデータを数字列で格納しているとの宣言。
 2行目は、横のピクセル数と縦のライン数を意味します。
 3行目は、階調の最大値を表現します。

 処理は、次のようにします。




PGM形式ファイル生成

 TeraTermで取得したテキストデータは、1行が16データになって  いるので、Tcl/Tkを利用して1行を128データにします。  また、先頭にヘッダファイルを付加しPGM形式ファイルを作成します。  Tcl/Tkのスクリプトは、以下としました。 #!/bin/sh wm title . "PGM generator" # clear file names set fname "" set pname "" set fd_in "" set fd_out "" # add menu on TopLevel . configure -menu .mnuTop menu .mnuTop # add sub form .mnuTop add cascade -label File -underline 0 -menu .mnuTop.file menu .mnuTop.file -tearoff no # add sub menu "Open" .mnuTop.file add command -label "Open" -command {OpenText} # add sub menu "Save" .mnuTop.file add command -label "Save" -command {SaveImage} # add sub menu "Quit" .mnuTop.file add command -label "Quit" -command {exit} # declare image file image create photo input_image -file $fname # set window size set w 1000 set h 1000 label .lblTxt -textvariable fname label .lblPgm -textvariable pname pack .lblTxt pack .lblPgm ####################### # Open Text procedure ####################### proc OpenText { } { global fname pname # set file types set ftype {{ "text Files" .txt} { "All Files" * }} # get file name from built-in tool set fname [tk_getOpenFile -filetypes $ftype -parent . ] # create file name set xlist [split $fname "."] set xlist [split $xlist "/"] set xlist [lindex $xlist end] set pname [lindex $xlist 0] set pname "$pname.pgm" } ####################### # Save Image procedure ####################### proc SaveImage { } { global fname gname pname # open files set fd_in [open $fname "r"] set fd_out [open $pname "w"] # add header puts $fd_out "P2" puts $fd_out "128 128" puts $fd_out "255" # justify context set i 0 set obuf "" while { [gets $fd_in sbuf] >= 0 } { # store set tmp [string trimright $sbuf " "] set obuf "$obuf$tmp " # increment incr i # judge if { $i == 8 } { set pgm [string trimright $obuf " "] # show puts $fd_out $pgm # prepare next set i 0 set obuf "" } } # close close $fd_in close $fd_out }  (このTcl/Tkスクリプトは、PgmGenと命名。)  次のように操作します。  pgmgen.tclをダブルクリックして、起動します。  (WindowsではActiveTclをインストールしておけば、操作は同じです。)  Fileをクリックして、Openを選びます。  テキストファイルの一覧から、PGM形式に変換したいファイルを選びます。  選ばれたテキストファイル名とPGM形式のファイル名が表示されます。  Fileをクリックして、Saveを選ぶと、PGM形式ファイルが作成されます。  Fileをクリックして、Quitを選ぶと終了します。

GIF形式ファイル生成

 Tcl/Tkのスクリプトで、テキストファイルをPGM形式にした後は  ImageMagickのconvertで、GIF形式に変換します。 convert sx7.pgm sx7.gif  これで、PGM形式のファイルsx7から、GIF形式のsx7を生成しています。

GIF形式ファイル表示

 Tcl/Tkのスクリプトで、GIF形式ファイルの内容を画面表示します。  (GBCで撮影したMCRのコースの一部です。)  このTcl/Tkスクリプトは、ImageViewerとしました。 #!/bin/sh wm title . "Image Viewer" ####################### # clear file names ####################### set fname "" set input_image "" ####################### # add menu on TopLevel ####################### . configure -menu .mnuTop menu .mnuTop # add sub form .mnuTop add cascade -label File -underline 0 -menu .mnuTop.file menu .mnuTop.file -tearoff no # add sub menu "Open" .mnuTop.file add command -label "Open" -command {OpenImage} # add sub menu "Quit" .mnuTop.file add command -label "Quit" -command {exit} ####################### # declare image file ####################### image create photo input_image -file $fname ####################### # set window dimension ####################### set w 1000 set h 1000 ############################################## # define image canvas with both scroll bar ############################################## canvas .drawcanvas -background white -width 200 -height 200 \ -scrollregion "0 0 $w $h" -yscrollcommand ".yscrl set" \ -xscrollcommand ".xscrl set" scrollbar .yscrl -command ".drawcanvas yview" scrollbar .xscrl -command ".drawcanvas xview" -orient horizontal ############################################## # place objects ############################################## pack .yscrl -side right -fill y pack .xscrl -side bottom -fill x pack .drawcanvas -side left -fill both -expand yes .drawcanvas create image 0 0 -image input_image -anchor nw ####################### # Open Image procedure ####################### proc OpenImage { } { # set file types set ftype {{ "gif Files" .gif} { "All Files" * }} # get file name from built-in tool set fname [tk_getOpenFile -filetypes $ftype -parent . ] if { [regexp {ppm$|gif$|pgm$|pbm$} $fname] > 0 } { input_image read $fname } }  次のように操作します。  imageviewer.tclをダブルクリックして、起動します。  Fileをクリックして、Openを選びます。  GIFファイルの一覧から、表示したいファイルを選びます。  選んだGIFファイルが表示されます。  Fileをクリックして、Quitを選ぶと終了します。  今なら、Perl、Python、Ruby等のスクリプト言語で  もう少し簡単に処理できるでしょう。
目次

inserted by FC2 system