画像をテキストアートにする 山中和義 2007/10/23 19:55:36
画像をテキストアートにする 山中和義 2007/10/23 19:55:36 ツリーへ
画像をテキストアートにする |
返事を書く ノートメニュー |
山中和義 <drdlxujciw> 2007/10/23 19:55:36 | |
!カラー画像をモノトーンに変換して、文字で濃淡を表現する。 !HTML文書(ファイル名 TEXTART.HTM)を作成するので、ブラウザで確認する。 LET N=10 !階調(トーン) DIM c$(0 TO N-1) !文字セット DATA "国","田","回","米","#","三","=","〜",":"," " !濃〜淡 MAT READ c$ SET COLOR MODE "NATIVE" GLOAD "c:\BASICw32\SAMPLE\ZENKOUJI.JPG" !画像を読み込む ASK PIXEL SIZE (0,0; 1,1) w,h !画像の縦横の大きさ(ピクセル単位)を調べる DIM p(w,h),q(w,h) !画像の大きさに対応する配列要素を用意する ASK PIXEL ARRAY (0,1) p !画像の各点の色情報を配列に格納する PRINT "画像の大きさ 縦:";h;" 横:";w SET BITMAP SIZE w,h !ウィンドウの大きさを画像に合わせる LET Drive$="C:" !ドライブ名 LET Path$="\My Documents" !パス名 LET Source$="TEXTART.HTM" !ファイル名 LET FileName$=Drive$&Path$&"\"&Source$ WHEN EXCEPTION IN OPEN #1: NAME FileName$ !ファイルを開く USE PRINT "ファイルが作成できません。" STOP END WHEN ERASE #1 PRINT #1: "<html><head><title>テキストアート</title></head>" !簡易HTML文書 PRINT #1: "<body><font size="&CHR$(34)&"1"&CHR$(34)&" color="&CHR$(34)&"#333300"&CHR$(34)&"><pre>" FOR y=1 TO h FOR x=1 TO w LET c=p(x,y) !指定位置の画素を読み込む LET R=MOD(c,256) !RGBに変換する LET tmp=INT(c/256) LET G=MOD(tmp,256) LET B=INT(tmp/256) !---------------↓↓↓↓↓--------------- LET t=INT(0.298912*R + 0.586611*G + 0.114477*B) !グレイスケール(NTSC係数による加重平均法) 輝度Y LET d=INT(t*N/256) !文字で濃淡を表す PRINT #1: c$(d); LET nR=INT(d*256/N) !変換後のRGB LET nG=nR LET nB=nR !---------------↑↑↑↑↑--------------- LET q(x,y)=(nB*256+nG)*256+nR !指定位置の画素に書き込む NEXT x PRINT #1 NEXT y PRINT #1: "</pre></body></html>" CLOSE #1 MAT PLOT CELLS, IN 0,1; 1,0: q !画像を表示する END |