controlling the size of GIF or PNG output
Question:
If I need a particular size GIF or PNG 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.
The PyFerret SET WINDOW command offers inch settings or pixel settings with qualifiers /XINCHES/YINCHES/ASPECT and /XPIXELS/YPIXELS/ASPECT.
Ferret sets the pixel symbols when a plot is drawn. We will use these symbols to resetthe 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 an 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.8the 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 of0.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