Difference between revisions of "Raster image I/O"

From Madagascar
Jump to navigation Jump to search
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
 
==Converting raster images to RSF files==
 
==Converting raster images to RSF files==
One option is sfjpg2byte. It requires the JPEG library to be present at the compilation time.
+
One option is <tt>sftif2byte</tt> or <tt>sfjpg2byte</tt>. It requires the TIFF or JPEG library, respectively, to be present at the compilation time.
 +
<bash>
 +
< lena.tif sftif2byte | sfdd type=float > lena.rsf
 +
</bash>
 
<bash>
 
<bash>
 
< lena.jpg sfjpg2byte | sfdd type=float > lena.rsf
 
< lena.jpg sfjpg2byte | sfdd type=float > lena.rsf
 
</bash>
 
</bash>
Another option is to use the convert utility from [http://www.imagemagick.org ImageMagick]. For a greyscale image:
+
Another option is to use the <tt>convert</tt> utility from [http://www.imagemagick.org ImageMagick]. For a grayscale image:
 
<bash>
 
<bash>
 
< lena.jpg convert - lena.gray
 
< lena.jpg convert - lena.gray
Line 24: Line 27:
  
 
==Converting RSF 2-D data to raster images==
 
==Converting RSF 2-D data to raster images==
 +
If Madagascar has been compiled with TIFF support, <tt>sfbyte2tif</tt> can be used:
 +
<bash>
 +
< model.rsf sfbyte | sfbyte2tif > model.tif
 +
</bash>
 
If Madagascar has been compiled with JPEG support, <tt>sfbyte2jpg</tt> can be used:
 
If Madagascar has been compiled with JPEG support, <tt>sfbyte2jpg</tt> can be used:
 
<bash>
 
<bash>
Line 35: Line 42:
 
     transp |  # Make data in row-major order
 
     transp |  # Make data in row-major order
 
     byte gainpanell=all allpos=y |  # Convert data to byte representation
 
     byte gainpanell=all allpos=y |  # Convert data to byte representation
     disfil col=1 format="%02X" |  # Dump data in one column in ASCII-hex
+
     disfil col=1 number=n format="%02X" |  # Dump data in one column in ASCII-hex
    sed -e "s/\s*[0-9]*\:\s*//g" |  # Strip column numbers
 
 
     xxd -r -p  # Read ASCII output and convert it to binary form
 
     xxd -r -p  # Read ASCII output and convert it to binary form
 
     ''')
 
     ''')

Latest revision as of 17:16, 12 August 2011

Converting raster images to RSF files

One option is sftif2byte or sfjpg2byte. It requires the TIFF or JPEG library, respectively, to be present at the compilation time. <bash> < lena.tif sftif2byte | sfdd type=float > lena.rsf </bash> <bash> < lena.jpg sfjpg2byte | sfdd type=float > lena.rsf </bash> Another option is to use the convert utility from ImageMagick. For a grayscale image: <bash> < lena.jpg convert - lena.gray echo in=lena.gray data_format=native_uchar n1=512 n2=512 | sfdd type=float > lena.rsf </bash> or, for a color image: <bash> < lena.jpg convert - lena.rgb

echo in=lena.rgb data_format=native_uchar n1=3 n2=512 n3=512 | sfdd type=float > lena.rsf

  1. Red component:

< lena_rgb.rsf sfwindow n1=1 f1=0 > lena_red.rsf

  1. Green:

< lena_rgb.rsf sfwindow n1=1 f1=1 > lena_green.rsf

  1. Blue:

< lena_rgb.rsf sfwindow n1=1 f1=2 > lena_blue.rsf </bash>

Converting RSF 2-D data to raster images

If Madagascar has been compiled with TIFF support, sfbyte2tif can be used: <bash> < model.rsf sfbyte | sfbyte2tif > model.tif </bash> If Madagascar has been compiled with JPEG support, sfbyte2jpg can be used: <bash> < model.rsf sfbyte | sfbyte2jpg > model.jpg </bash> Then, another program can be used to convert the JPEG file to another format. If ImageMagick is present, it can be used to convert a RSF binary to almost any image format. In a SConstruct, the workflow would look like: <python> Flow('data.gray','data',

   
   transp |  # Make data in row-major order
   byte gainpanell=all allpos=y |  # Convert data to byte representation
   disfil col=1 number=n format="%02X" |  # Dump data in one column in ASCII-hex
   xxd -r -p  # Read ASCII output and convert it to binary form
   )

Flow('data.png','data.gray',

   
   convert -size %dx%d -depth 8 ${SOURCES[0]} ${TARGETS[0]}  # Run ImageMagick
    % (n2, n1), stdin=0, stdout=0)

</python>

To output to another format, just change the extension in the last Flow() from .png to .gif or .jpg, for example. Create the output simply by running: scons data.png