wvogel日記

自分用の技術備忘録が多めです.

imageJ

imageJは偉大なり。
全然知らなかったのですが、画像データをテキストデータにして保存したり、テキストデータから画像をおこしたりできるのです!!


早速、昔作った画像をいじってみましょう
これが元データ

imageJで取り込んで、Text imageにして保存。

ソースコード

import System.IO
import Control.Monad

main = readFile "gameboy.txt"
        >>= writeFile "gameboy2.txt"
                            .unlines.map (unwords.f.words).lines

f :: [String] -> [String]
f str = drop 37 str ++ take 37 str

これによって生成されたテキストデータを、imageJでimport.
すると

面白いですね!
カラーは、RGBを一つの数字列で表すためにimageJ側で式計算をしているので、出力結果は濃淡の着いた白黒画像。


今気付いたけどこの画像、音量ダイヤルつけ忘れてる.....
確かコントラストボタンは左側だが、きっとそれもつけてないな


もう一つ。
ソースコード

import System.IO
import Control.Monad

main = readFile "gameboy.txt"
        >>= writeFile "gameboy3.txt".unlines.map f.zip'.lines

zip' :: [String] -> [(Int,[String])]
zip' str = map (\(a,b)->(a,words b)) $ zip [1,2..] str

f :: (Int,[String]) -> String
f (i,str) = let i' = mod i $ length str
            in unwords $ drop i' str ++ take i' str

画像