diff scripts/image/saveimage.m @ 3757:574711ce9070

[project @ 2000-12-15 18:19:15 by jwe]
author jwe
date Fri, 15 Dec 2000 18:19:16 +0000
parents 599fb10b454d
children b8c1cb5b9fd9
line wrap: on
line diff
--- a/scripts/image/saveimage.m	Fri Dec 15 03:14:45 2000 +0000
+++ b/scripts/image/saveimage.m	Fri Dec 15 18:19:16 2000 +0000
@@ -133,6 +133,10 @@
 
   map = round (255 * map);
 
+  bw = (map_nr == 2
+        && ((map(1,1) == 0 && map(2,1) == 255)
+            || (map(1,1) == 255 && map(2,1) == 0)));
+
   img = round (img');
   [img_nr, img_nc] = size (img);
 
@@ -156,7 +160,38 @@
     tagline = sprintf ("# Created by Octave %s, %s",
 		       __OCTAVE_VERSION__, time_string);
 
-    if (grey)
+    if (grey && bw)
+
+      if (map(1) != 0)
+        map = [0; 1];
+      else
+        map = [1; 0];
+      endif
+
+      n_long = rem (img_nc, 8);
+      tmp = zeros (ceil (img_nc/8), img_nr);
+
+      k = ceil (img_nr/8);
+      tmp = zeros (k, img_nc);
+
+      ## Append columns with zeros to original image so that
+      ## mod (cols, 8) = 0.
+
+      bwimg = postpad (reshape (map(img), img_nr, img_nc), k * 8, 0);
+
+      b = kron (pow2 (7:-1:0)', ones (1, img_nc));
+
+      for i = 1:k
+        tmp(i,:) = sum (bwimg(8*(i-1)+1:8*i,:) .* b);
+      endfor
+
+      fid = fopen (filename, "w");
+      fprintf (fid, "P4\n%s\n%d %d\n", tagline, img_nr, img_nc);
+      fwrite (fid, tmp, "char");
+      fprintf (fid, "\n");
+      fclose (fid);
+
+    elseif (grey)
 
       fid = fopen (filename, "w");
       fprintf (fid, "P5\n%s\n%d %d\n255\n", tagline, img_nr, img_nc);