]> gitweb.michael.orlitzky.com - spline3.git/commitdiff
Add some convenience functions to write chunks/slices to bitmaps.
authorMichael Orlitzky <michael@orlitzky.com>
Wed, 14 Sep 2011 17:35:47 +0000 (13:35 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Wed, 14 Sep 2011 17:35:47 +0000 (13:35 -0400)
src/MRI.hs

index 52be3f7b1cba92c96d9bb64142ed7b3dd4acb546..5f2ceea483437bc7a9216f066e86e1d32867288d 100644 (file)
@@ -6,6 +6,7 @@ import Data.Bits
 import Data.Array.Repa                  as R
 import Data.Array.Repa.IO.Binary        as R
 import Data.Array.Repa.IO.ColorRamp     as R
+import Data.Array.Repa.IO.BMP           as R (writeComponentsToBMP)
 
 import Values
 
@@ -158,3 +159,24 @@ z_slice3 n arr
     previous = transpose_zx $ reshape mri_slice3d (z_slice (n-1) arr)
     current = transpose_zx $ reshape mri_slice3d (z_slice n arr)
     next = transpose_zx $ reshape mri_slice3d (z_slice (n+1) arr)
+
+
+write_values_slice_to_bitmap :: Values2D -> FilePath -> IO ()
+write_values_slice_to_bitmap v3d path =
+  R.writeComponentsToBMP path routput goutput boutput
+  where
+    arr_bracketed = bracket_array v3d
+    colors = values_to_colors $ R.map fromIntegral arr_bracketed
+    routput = R.map (\(red, _,     _)    -> red)   colors
+    goutput = R.map (\(_,   green, _)    -> green) colors
+    boutput = R.map (\(_,   _,     blue) -> blue)  colors
+
+
+write_values_chunk_to_bitmap :: Values3D -> FilePath -> IO ()
+write_values_chunk_to_bitmap v3d path
+  | zdim /= 3 = error "not a 3xMxN chunk"
+  | otherwise = write_values_slice_to_bitmap target_slice path
+  where
+    (Z :. zdim :. _ :. _) = extent v3d
+    target_slice = z_slice 1 v3d
+