Thanks Sebastian, ppm module is indeed very useful. So, I guess my question then just boils down to, how can I write a function to mimic the setPixel function ->
Basically, a blank white image would look like this (as per ppm module) [ [ (255, 255, 255) , (255, 255, 255) , (255, 255, 255) ] , -- 3 columns of row 1 [ (255, 255, 255) , (255, 255, 255) , (255, 255, 255) ] --- 3 columns of row 2 ] setPixel x y r g b when called like this - setPixel 0,0,255,0,0 [ [ (255, 0, 0) , (255, 255, 255) , (255, 255, 255) ] , -- 3 columns of row 1 [ (255, 255, 255) , (255, 255, 255) , (255, 255, 255) ] --- 3 columns of row 2 ] What would be a good way to implement such a function? Regards, Kashyap ________________________________ From: Sebastian Sylvan <sebastian.syl...@gmail.com> To: CK Kashyap <ck_kash...@yahoo.com> Cc: haskell-cafe@haskell.org Sent: Sunday, August 2, 2009 9:30:08 PM Subject: Re: [Haskell-cafe] Writing a pnm file On Sun, Aug 2, 2009 at 4:00 PM, CK Kashyap <ck_kash...@yahoo.com> wrote: Hi, >Now that I've understood how to generate raster points of a line in Haskell - >the next thing I want to do is generate a pnm file with it. I've done it in >perl as of now. In perl, I can have a scalar variable $x contain a string of >256*256*3 bytes (for 24-bit 256x256 image) and set pixels using substr on LHS. >I was wondering how I could do something similar in Haskell? > > >sub setPixel{ >my($x,$y,$red,$green,$blue)=...@_; >my$pixel=pack "CCC",$red,$green,$blue; >my$offset=$WIDTH*$y*3 + $x*3; >substr($image,$offset,3) = $pixel; >} There's a library on hackage which does this http://hackage.haskell.org/package/ppm You can install this by doing >cabal install ppm Here's an example usage (this uses the binary version of ppm, the docs for ppm has an example for the ASCII version): writePPM fname img = withBinaryFile fname WriteMode (\h -> hPutStr h (ppm_p6 img) ) If you're looking for the learning experience, you could always read the source for the library (which is pretty tiny). -- Sebastian Sylvan +44(0)7857-300802 UIN: 44640862
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe