調子に乗って、今度はCSVからBMPへ戻すプログラム。
3枚のCSV化した画像データを
EXCELシート上で「目に見える形で」フィルター処理をして、
それを再び10進BASICでBMPに戻すわけだ。
10進BASICプログラム→[csv2bmp.bas]
REM [csv2bmp.bas] REM RGBに分解された3つのCSVファイルからBMP画像データを作る REM REM office2003のEXCELシート互換にするため REM BMPの横幅は256pxまで、縦幅は65536pxまで REM REM [使用法] REM (1)このプログラムと同じフォルダに加工後のRGBデータ REM ○○_rr_out.csv,○○_gg_out.csv,○○_bb_out.csv REM ファイルを置く REM (2)読み込むCSVファイル名はf$="○○"で指定する REM (3)実行すると3つのCSVファイルを読み込み REM ○○_out.bmp REM としてBMPファイルが同じフォルダに出力される OPTION ARITHMETIC NATIVE SET COLOR MODE "NATIVE" LET f$="neko" !比較のためあらかじめ原画像も表示しておく GLOAD f$ & ".bmp" ASK PIXEL SIZE (0,0; 1,1) bw,bh DIM bc(bw,bh), rr(bw,bh), gg(bw,bh), bb(bw,bh), bf(bw,bh) DIM dr(bw), dg(bw), db(bw) ASK PIXEL ARRAY (0,1) bc SET BITMAP SIZE bw,bh OPEN #1:NAME f$ & "_rr_out.csv", RECTYPE INTERNAL OPEN #2:NAME f$ & "_gg_out.csv", RECTYPE INTERNAL OPEN #3:NAME f$ & "_bb_out.csv", RECTYPE INTERNAL FOR y=1 TO bh MAT READ #1: dr MAT READ #2: dg MAT READ #3: db FOR x=1 TO bw LET rr(x,y)=MAX(MIN(dr(x),255),0) LET gg(x,y)=MAX(MIN(dg(x),255),0) LET bb(x,y)=MAX(MIN(db(x),255),0) NEXT x NEXT y CLOSE #3 CLOSE #2 CLOSE #1 MAT gg=256*gg MAT bb=65536*bb MAT bf=rr+gg MAT bf=bc+bb !一瞬だけ変換後のBMPを表示してBMPファイルとして保存 MAT PLOT CELLS, IN 0,1; 1,0 :bf GSAVE f$ & "_out.bmp" !その後、変換前と後を並べて表示 SET BITMAP SIZE bw*2,bh*2 MAT PLOT CELLS, IN 0,1; 1/2,1/2 :bc MAT PLOT CELLS, IN 0,1/2; 1/2,0 :bf END