バイナリPPMの出力
調べるのにすごい苦労してしまった。
[Word8]がByteStringであることはすぐにわかったのだが
Int->Word8の変換方法が見つからなくて難航。
たまたま検索でかかったコード辺からようやく判明した。
toEnumとするとInt->Word8にできるらしい。
リファレンスを見るのを覚えた。
import qualified Data.ByteString.Char8 as B import System.IO -- write raw data to file as PPM binary format. writeP6::String->Int->Int->[RGB24]->IO() writeP6 filepath width height rawdata=do handle<-openBinaryFile filepath WriteMode -- header B.hPut handle (B.pack ("P6\n" ++(show width)++" "++(show height)++"\n" ++"255\n")) -- binary B.hPut handle $ B.pack $ map toEnum $ concatMap toList rawdata hClose handle -- RGB24に追加 toList::RGB24->[Int] toList (RGB24 r g b)=[r, g, b]