Return to Ferret FAQ


Controlling the size of GIF output


Question:

If I need a particular size GIF output file, say 600x800, how do I go about calculating the SET WINDOW/SIZE, SET WINDOW/ASPECT values?

Explanation:

You can get any size gif you want, using SET WINDOW/SIZE and SET WINDOW/ASPECT, and the Ferret symbols PPL$XPIXEL and PPL$YPIXEL to check what size the GIF output is.

Ferret sets the pixel symbols when a plot is drawn. We will use these symbols to reset the size of the window to the desired width and height. SET WINDOW/ASPECT=y_over_x sets the ratio of the height to the width of the window. SET WINDOW/SIZE=0.7*frac rescales the area of the plot window to frac times the area of the default window.

When running with and X-window server, gif images are grabbed back from the output window. This can give inconsistent results. Run Ferret in -gif mode. (Note that prior to Ferret v5.8 the symbols PPL$XPIXEL and PPL$YPIXEL were not available when in -gif mode.)

Solution:

For example, to make a gif that is 800 pixels wide and 600 high, first make a test plot with the correct aspect ratio.

   > ferret -gif
   
   yes? set window/aspect=0.75
   yes? shade/i=1:10/j=1:15 i+j
   
   yes? show symbol ppl$xpixel
   PPL$XPIXEL = "824"
   yes? show symbol ppl$ypixel
   PPL$YPIXEL = "617"
   

Now, reset the size of the plot. The default window size is 0.7, and the SET WINDOW/SIZE= qualifier takes an argument which is the area of the plot window. Reset the default size of 0.7 to default_size*(desired_pixel_size/current_pixel_size), or 0.7*(600*800)/(($ppl$xpixel)*($ppl$ypixel))

Once we reset the size, redraw the plot and save it as a gif file.

   yes? set window/aspect=0.75/size=`0.7*(600*800)/(($ppl$xpixel)*($ppl$ypixel))`
   
    !-> set window/aspect=0.75/size=0.66089
   
   yes? shade/i=1:10/j=1:15 i+j
   yes? frame/file=test.gif
   
   yes? show symbol ppl$xpixel
   PPL$XPIXEL = "800"
   yes? show symbol ppl$ypixel
   PPL$YPIXEL = "600"

   yes? exit

Check the size of the gif with a tool like xv, or the identify command from ImageMagick.

   > identify test.gif
   test.gif 800x600+0+0 PseudoClass 32c 10084b GIF 1s


Last modified: March 31, 2005 [an error occurred while processing this directive]