Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
ZIMG(1) 		     General Commands Manual			 ZIMG(1)

NAME
     zimg - render 2d data of arbitrary format

SYNOPSIS
     zimg [options] [file ...]

DESCRIPTION
     The zimg program generates png images from arbitrary formatted 2-D ascii or
     binary  data.  Optionally, jpeg, ppm or pgm images can be generated instead
     of png.

INPUT FILES
     If no input files are given, zimg reads from stdin.

     If the input file ends in .gz, .bz2, .z or .Z  and  your  operating  system
     supports  the popen() call, the file is filtered through gunzip, bunzip2 or
     uncompress, respectively.

     If an input file is not accessible, the availability of the file  with  the
     suffixes .gz, .bz2, .z or .Z appended is checked (multiview).

     If  no  command line options are specified, zimg assumes plain ascii input,
     where the dimensions of the image are taken from the first two  convertable
     integers  and comment lines are marked by a hash `#' mark at the very first
     column of each line.  If ascii data is read the first lines are parsed  for
     zimg modelines until the first data point is read. See below in the section
     MODELINES.

     Currently	the  `ESRF  data  format' (edf and ehf) is the only binary input
     format which is detected automatically by zimg (if this option was not dis-
     abled at compile time). In the case of ehf, the data is read from a differ-
     ent file as specified by the tag EDF_BinaryFileName.

     If the size was not specified and no binary option was selected, the  first
     bytes  of	the source file are examined to check if the source is already a
     png file. This works only on systems where there's  no  difference  between
     reading ascii and binary data (UNIX).  If the source file is a png, all op-
     tions  except  the colormap, labelling and output options are ignored. This
     is mainly useful for labelling a png file later (or a png file that was not
     created by zimg).	It can also be used to just convert png to jpeg.  Or you
     can specify a different colormap, to change the  colormap	entries  of  the
     source png.  Note that this check for source png's is not available if zimg
     was  linked  with	an  older  libgd  version.   If the source is a png, the
     --dump-colormap switch dumps the colormap entries of the png  file  instead
     of the zimg colors.

OPTIONS
     In  almost all cases you'll need to specify at least a few command line op-
     tions to tell zimg something about the input format and specify the  output
     style.

     Note,  that  the order of command line options is important: in the case of
     mutually exclusive options the last one wins;  in	the  case  of  a  switch
     which  turns  an option on, a second occurence of this switch turns the op-
     tion off again.  Example: -x -x does nothing. This is useful for  overwrit-
     ing options which were set in the resource files ~/.zimgrc and .zimgrc (see
     section  FILES).	If  an options overwrites another option (e.g. in `--red
     --blue', the second switch would overwrite the first), this is silently ig-
     nored.

     Some switches can be defined more than once  and  are  position  dependent.
     These switches include
	 --differentiate
	 --curvature
	 --smooth
	 --logarithmic
	 --fabs
	 --absolute
	 --relative

     This means that in
		zimg --relative=10-60 --differentiate
     the relative scaling applies to the raw data, but in
		zimg --differentiate --relative=10-60
     the relative scaling applies to the differentiated data.

     Spaces  separating  the single-letter options from their parameters are op-
     tional.

     The availability of some  options	are  compile-time  dependent.	Use  the
     --help  option  to  get  a list of valid options for your binary version of
     zimg.

     -r, --size=width[,height]
	  specifies the width and height of the 2-D data. If height is not given
	  it is set equal to width. The separator 'x' (instead of  ',')  can  be
	  used also for backwards compatibility.

     -M, --matrix
	  Input  is  assumed  to be in ascii matrix format. The ascii input file
	  should have the data in rows and columns. The number of  rows  is  the
	  image  dimension  in	vertical direction. The number of columns is the
	  image in horizontal direction.  The dimension of the data can be over-
	  written by the --size switch.

     -p, --pattern=pattern
	  Mark comment blocks.	This option is	used  when  reading  unformatted
	  ascii  data.	Each  line  will  be truncated at pattern.  This options
	  might be used repeatedly to specify more  than  one  comment	pattern.
	  This	option	was not really tested and might be still buggy.  For the
	  future it is planned to include also regular expressions.

     -n, --column=number
	  read column number (ascii input). Multiple columns can be selected  by
	  using  this  option  repeatedly.   Currently this is limited to the 32
	  first columns.  If number is omitted, the data of all columns will  be
	  used.

     --skip[=bytes/lines]
	  skip	this  amount  of  lines when reading ascii data.  Skip bytes, if
	  reading binary data. Note that the unit is bytes, irrespective of  the
	  input  type  (short ..). If the optional size argument is missing, the
	  option is reset to its default. This default behavior is  as	follows:
	  for  binary data, all available data is read from the input stream and
	  the header size (which will be skipped) is then calculated as the dif-
	  ference between the size of input data and the size of  the  image  as
	  specified  by  the  -r  switch. Or in short: the last <width>x<height>
	  items of the input stream will be taken.  If you don't like this  fea-
	  ture	you  can  disable  it explicitly by using the switch `--skip=0'.
	  For ascii data no skipping will be done by default.

     --options=/regexp/switches
	  apply switches, if the input filename matches regexp.  Especially use-
	  ful if used in a .zimgrc file. The  separator  character  can  be  any
	  character   which   is  not  present	in  regexp,  for  example  --op-
	  tions=#/usr/local#switches.	See  also  the	--input-filter	 switch.
	  --options  is only available if your system provides the POSIX regular
	  expression functions regcomp / regexec (check zimg -V  for  availabil-
	  ity).

     --input-filter=filter
	  filter input files thru filter. If filter contains a %s, it is substi-
	  tuted with the file name, else the filename is appended to the filter.
	  This	switch	is especially useful if used in a .zimgrc file. Example:
	  --options='/.int$/--input-filter=int < %s'.  See  also  the  --options
	  switch.  --input-filter  is only available if your system supports the
	  popen() call (check zimg -V for availability).

     -o, --output=path
	  normally zimg writes to stdout. You don't ever need  this  option,  if
	  you  redirect stdout to you destination file or pipe. If more than one
	  input file is given, path should be an existing  directory  where  the
	  output  files should be stored. In this case the output names are con-
	  structed from path, the input file name and a suffix	".gif",  ".png",
	  ".jpg",  "ppm"  or "pgm" depending on the gd version which was used at
	  compile time and eventually the -j, -P, --ppm or --pgm switch.   Using
	  -  for  path will force stdout also for multiple input files; however,
	  this makes sense only with ppm and pgm output  image	formats  because
	  png  and  jpeg  formats do not allow multiple images in one file (only
	  the first one would be read).

     --big-endian
	  binary input data is big-endian. This option overwrites --swap and can
	  be overwritten by --swap and --little-endian.  This switch does  noth-
	  ing  if  the machine where zimg runs is also big-endian, otherwise the
	  words get swapped.

     --little-endian
	  binary input data is little-endian. This option  is  the  opposite  of
	  big-endian,  overwrites  --swap  and	can be overwritten by --swap and
	  --big-endian.  This switch does nothing if the machine where zimg runs
	  is also little-endian, otherwise the words get swapped.

     --swap
	  swap bytes when reading binary input. This might be necessary when us-
	  ing binary files from different platforms. If zimg runs on  a  little-
	  endian  machine (e.g. Intel) --swap assumes the binary input data cre-
	  ated by a big-endian machine	and  vice  versa.   All  three	switches
	  --swap,  --big-endian  and  --little-endian  overwrite  each other and
	  therefore it is recommended to use only one of these switches.

     -f, --float
	  read binary float (normally 4 bytes) data.

     -d, --double
	  read binary double (normally 8 bytes) data.

     --char
	  read signed char data.

     --short
	  read signed short data.

     --int
	  read signed int data.

     --long-int
	  read signed long-int data.

     -c, --unsigned-char
	  read unsigned char data.

     -s, --unsigned-short
	  read unsigned short data.

     -i, --unsigned-int
	  read unsigned int data.

     --unsigned-long-int
	  read unsigned long int data.

     --complex-float[=(abs/length|phase|real|imaginary)]
	  input data is binary complex float. (ascii parsing of complex  numbers
	  is not implemented yet. The value of the switch determines how to dis-
	  play	the complex numbers. The default is abs or the alias length (the
	  length of the complex number).

     --complex-double=(abs/length|phase|real|imaginary)
	  Like --complex-float, but for complex double binary input data.

     --red
	  use a red scale color map.

     --blue
	  use a blue scale color map.

     --grey, --gray
	  use a grey scale color map.

     -m, --colormap[=path]
	  use custom colormap from the file path. The  file  must  hold  r  g  b
	  triplets  with  values ranging from 0 to 0xff (255). There must be ex-
	  actly one triplet per line, where empty lines and lines beginning with
	  a hash `#' mark are skipped. The maximum number of colors  is  defined
	  in  zimg.h  and  it is currently 240 (16 colors are reserved for "LINE
	  COLORS").  The colormap file is searched  in	the  current  directory,
	  then	in ~/.zimg/cmap, then in /usr/local/share/zimg/cmap.  If the op-
	  tional argument number is omitted, the colormap is reset  to	the  de-
	  fault.

     -m, --colormap[=red[,green[,blue]]]
	  create  a colormap using predefined colormap formulae.  red, green and
	  blue must be integers between -36 and 36.  If blue  and/or  green  are
	  missing,  they're set to green or red respectively (so a gray colormap
	  value can be created by specifying red only).  The numbers select  one
	  of  the  predefined  formulae  which	are used to map the z value to a
	  color intensity.  Negative numbers invert the  color	intensity.  Cur-
	  rently  the following formulae are defined where x ranges from [0, 1]:
	  If the optional argument number is omitted, the colormap is  reset  to
	  the default.	Note: these formulae are the same as in gnuplot (version
	  3.8  and  later),  where  you  can  try  and	test them using commands
	  [set|show|test] palette.

	      0    x = 0
	      1    x = 0.5
	      2    x = 1
	      3    x = x    (identity)
	      4    x = x * x
	      5    x = x * x * x
	      6    x = x * x * x * x
	      7    x = sqrt(x)
	      8    x = sqrt(sqrt(x))
	      9    x = sin(90 * x)
	     10    x = cos(90 * x)
	     11    x = fabs(x - 0.5);
	     12    x = (2 * x - 1) * (2 * x - 1);
	     13    x = sin(180 * x);
	     14    x = fabs(cos(180 * x));
	     15    x = sin(360 * x);
	     16    x = cos(360 * x);
	     17    x = fabs(sin(360 * x));
	     18    x = fabs(cos(360 * x));
	     19    x = fabs(sin(720 * x));
	     20    x = fabs(cos(720 * x));
	     21    x = 3 * x;
	     22    x = 3 * x - 1;
	     23    x = 3 * x - 2;
	     24    x = fabs(3 * x - 1);
	     25    x = fabs(3 * x - 2);
	     26    x = (1.5 * x - 0.5);
	     27    x = (1.5 * x - 1.0);
	     28    x = fabs(1.5 * x - 0.5);
	     29    x = fabs(1.5 * x - 1.0);
	     30
		      if (x <= 0.25)
			  return 0;
		      if (x >= 0.57)
			  return 1;
		      x = x / 0.32 - 0.78125;
	     31
		      if (x <= 0.42)
			  return 0;
		      if (x >= 0.92)
			  return 1;
		      x = 2 * x - 0.84;
	     32
		      if (x <= 0.42)
			  x *= 4;
		      else
			  x = (x <= 0.92) ? -2 * x + 1.84 : x / 0.08 - 11.5;
	     33
		      x = fabs(2 * x - 0.5);
	     34
		      x = 2 * x;
	     35
		      x = 2 * x - 0.5;
	     36
		      x = 2 * x - 1;

     -b, --cbox, --colorbox[=n]
	  draw a labelled colorbox right to the image. If the number of labels n
	  isn't given, it is calculated automatically according to the image and
	  font heights. Labelling can be turned off by specifying --colorbox=0.

     --cbox-fmt, --cbox-format=format
	  format is a c sprintf format string for floats, e.g.	%3.6g  (see  the
	  sprintf(3)  manual), which is used for formatting the colorbox legend.
	  Turns on --cbox implicitely.

     --cbox-label=string
	  Print string next to the colorbox (e.g. a unit for the  colorbox  num-
	  bers).   Turns  on  --cbox  implicitely.   string  can  be a multiline
	  string, see for example the --label switch.

     --dump-colormap
	  dump a colormap to stdout as it can be read back with the  -m  switch.
	  This can be useful for manually editing and reading back the colormap.
	  The  --dump-colormap	switch disables most of the other switches -- no
	  processing of data files is done. The only exception is if the  source
	  files  are  png  files:  in  this case not the (specified) colormap of
	  zimg, but the color entries of the source png are dumped.

     -I, --invert
	  invert the selected color map.

     -x, --xor[=color]
	  do an exclusive or with the specified color (defaults to white).   For
	  the gray scale color map this equivalent to the --invert switch.

     --differentiate
	  apply  a discrete differentiation (1'st derivative) to the data.  This
	  is a position dependent switch

     -u, --curvature
	  display the curvature (2'nd derivative) of the data.	This is a  posi-
	  tion dependent switch

     --smooth[=threshold]
	  wipe	out hot spots. The average and sigma of the nearest neighbors of
	  each pixel are calculated.  If  the  pixel's	value  is  greater  than
	  (`threshold'	* sigma + average), it will be set to the average of the
	  neighbors.  This is a position dependent switch

     -z, --crange=min,max
	  sets data range for the color mappings to min to min.  Default is  au-
	  toscaled  color range according to the image data values.  The partial
	  notations --crange=min, and --crange=,max can be  used,  denoting  the
	  missing limiting value to be autoscaled.

     -l, --logarithmic[=scale]
	  use  a  logarithmic color scale where scale must be strictly positive.
	  The data is scaled to the range 0 - scale, then the log1p () is taken.
	  The default for scale is 1. The best way to understand this is to com-
	  pare the results for different scale values.	This is a  position  de-
	  pendent switch

     -a, --fabs
	  take	the absolute value of the input data. The long option --fabs was
	  named after the c function fabs(), because the  --absolute  switch  is
	  used	for  absolute scaling (see below).  This is a position dependent
	  switch

     --absolute=min,max
	  set everything below min to min and every thing above max to max.  The
	  partial  notations  --abs=min, and --abs=,max can be used. If both min
	  and max are given, a - can be used as  separator  instead  of  the  ,.
	  This is a position dependent switch

     --relative=min,max
	  same	as  above, but min and max are to be given relative (in percent)
	  to the data's min and max.  This is a position dependent switch

     -N, --no-data, --nda=[val|@percent[,color]]
	  set data points which are equal to val to the  color	color  (default:
	  black). If val isn't specified, or if @percent is specified instead of
	  val, the nda value is determined automatically from the border values:
	  The  border  value which occurs most frequently will be the NDA value.
	  The value @percent if given, must be 0 < @percent <= 100.  If @percent
	  > 1 it is divided by 100, so @75 is equivalent to @0.75. The	@percent
	  value  gives	the fraction of nda border values compared to the number
	  of border pixels which must be reached at least for the  automatically
	  determined nda value to be valid. Example: suppose your image is 100 x
	  200 pixels large, so the number of border pixels is 600 - 2 = 598.  If
	  you  specify	--nda=@.75 and the most frequent border value occurs 350
	  times, the nda feature won't be applied, since  350  is  smaller  than
	  0.75 * 598.

     -e, --expr=string
	  filter  data	through the c-style string expression string.  This fea-
	  ture is compile-time dependent and only available, if  zimg  -V  shows
	  the string dynaload.	The expression string string will be compiled on
	  the  fly  by	"cc  -c -O2 -pipe  -DHAVE_GD_FREETYPE -fstack-protector-
	  strong -fno-strict-aliasing  -shared".  The expression is wrapped in a
	  function which will be called for each data value z (double) with  the
	  current  x  (unsigned int), width (unsigned int) and y (unsigned int),
	  height (unsigned int) values supplied. Example:

	      # zimg -e "cos(z) - (width - x)" ...

     -R, --expr-source=file.c
	  Use file.c as input file name for compiling the  expression.	 If  the
	  switch  --expr is not given, --expr-source should point to an existing
	  file which holds the c source for  the  expression  function.  If  the
	  switch  --expr is given, it will be wrapped in a c function and stored
	  in the file.c given by --expr-source. If --expr-source is  not  given,
	  the  expression  given  by --expr will be stored in a temporary c-file
	  which will be deleted after the expression evaluation.

	  The switch --expr-source  can  be  used  for	reusing  the  expression
	  source:

	      # zimg -e "cos(z) - (width - x)" -R myfunc.c
	      # zimg -R myfunc.c ... file.dat

     -O, --expr-object=file.so
	  Use file.so as output file name for compiling the expression.  If none
	  of  the switches --expr and --expr-source is given, file.so should ex-
	  ist and be a valid object file which was probably compiled  before  by
	  zimg.  Shared  objects  are searched in the current directory, then in
	  the directory ~/.zimg/expr, then in /usr/local/lib/zimg/expr and  then
	  in  the  search path of your dynamic loader (refer to the manual pages
	  of dlopen() or  shl_load(),  depending  on  the  implementation).   If
	  --expr-object  is not given, the expression given by --expr or --expr-
	  source will be compiled to a temporary shared object file  which  will
	  be deleted after the expression evaluation.

	  If at least one of the switches --expr or --expr-source are given, the
	  expression will be compiled to file.so. This can be used for compiling
	  a shared object file for later use:

	      # zimg -e "cos(z) - (width - x)" -O myfunc.so
	      # zimg -O myfunc.so ... file.dat

	  For  complicated expressions it might be useful to create the c-source
	  for the expression with an editor and compile it 'by hand'. Please re-
	  fer to the manual page of your c-compiler for how to create shared ob-
	  ject files (for gcc it is the switch -shared). The shared object  must
	  export  a function zimg_expression with the zimg_expression_t as given
	  in zimg.h. Example:

	      #include <zimg.h>

	      float
	      zimg_expression(unsigned int x, unsigned int y,
		  float z, const zimg_expression_info_t* info)
	      {
		  unsigned int height = info->height;
		  return z - (float)x * (float)(height - y);
	      }

     -S, --scale=xy

     -S, --scale=x,y
	  Scaling of the image. If only one number is given, it is used for both
	  directions. Any non-numeric character may be used as separator.

     -C, --crop[=left-rightxtop-bottom]
	  crop the raw data to the specified size. Note that the  numbers  given
	  apply to the raw data, not to the eventually enlarged or binned image.
	  If  the  optional  argument  is omitted, the data is cropped automati-
	  cally: all data with the same value as the border is cropped.

     -A, --align=horizontal[xvertical][,bordercolor]
	  align to an integer multiple of the specified pixels. If  vertical  is
	  omitted, it it set to horizontal. Example: -A16 will pad the resulting
	  image so that its (both) dimensions are multiples of 16.  This is use-
	  ful,	if  the  images  are used to create an mpeg sequence for example
	  (otherwise mpeg_encode will cut the images down so that the dimensions
	  are multiples of 16). The data is centered within the resulting image.
	  The optional argument bordercolor must be given as 6-digit hexadecimal
	  number, where the first digits are the red value, the second two  dig-
	  its  the  green  value  and the last two digits the blue value (so the
	  color values for each color are between 0 and  ff).	Note  that  zimg
	  will	try  to choose a color out of the existing color map which comes
	  close to what you've specified, but depending on  the  color	map  you
	  might not get exactly what you've requested.	See also the --textcolor
	  switch.   If	the  bordercolor is not given, the image border color is
	  chosen to be the most frequent color of the original data's border.

     --contours=levels[,log][,bg=color|fg=color]
	  draw contour lines. This option is still experimental. Optional  argu-
	  ments  are  probably	subject to future changes. The optional argument
	  `log' distributes the contour levels logarithmically over  the  image.
	  The optional argument bg=color forces contour-only drawing i.e. colors
	  the background with the specified color. This color must be given as 3
	  or 6 digit hex value or by the special keyword 'black'.  fg=color uses
	  the  specified  color as contour line color.	bg and fg and should not
	  be used together.  The contour algorithm is pretty fast and  does  not
	  spline when enlarging the image.

     --interlace
	  write  an  interlaced  image.  --interlace  is off by default.  If you
	  write a jpeg image using the --jpeg  switch,	the  --interlace  switch
	  will be interpreted to write a progressive JPEG.

     -g, --gif
	  write  a  gif instead of a png image. This switch is only available if
	  libgd supports both png and gif.

     -j, --jpeg[=quality]
	  write a jpeg instead of a png image. quality must be an integer number
	  between (inclusive) 0 and 100. If quality is omitted,  an  appropriate
	  default quality is used.  Jpeg is only available, if zimg was compiled
	  with	libgd >= 1.8.  If you have set image interlacing using the --in-
	  terlace switch, this switch is  interpreted  to  write  a  progressive
	  JPEG.   Some	programs  (e.g.,  Web  browsers) can display progressive
	  JPEGs incrementally; this can be useful when	browsing  over	a  rela-
	  tively  slow	communications link, for example.  Progressive JPEGs can
	  also be slightly smaller than sequential (non-progressive) JPEGs.

     -P, --ppmorpgm
	  write a portable pixmap (ppm) or portable graymap (pgm) instead  of  a
	  png  image according to --gray palette. These image formats are useful
	  when piping zimg's output directly to other programs	(filters).  Fur-
	  ther,  as  there  can be just a single png or jpeg image in one png or
	  jpeg file, but several ppm or pgm images in one ppm or  pgm  file,  it
	  makes ppm and pgm output very useful for producing image movies from a
	  series of input data files, see examples below.

     --ppm
	  write a portable pixmap (ppm) instead of a png image.

     -P, --pgm
	  write  a portable graymap (pgm) instead of a png image; this should be
	  used only together with --gray option, otherwise a function  of  r,g,b
	  values of a pixel is calculated as its gray value.

     -t, --label=[+-][+-]y,string
	  print  string  at  the  specified position of the FINAL image. 'Final'
	  means the image size with all padding and scaling applied.  The string
	  can be a multiline string separated by  '\n',  e.g.  "this\nis\nmulti-
	  line\ntext".	 x  and  y  can  be  negative coordinates, in which case
	  they're interpreted as offsets of the right and bottom  text	bounding
	  box  from  the  right and bottom border of the image respectively.  If
	  you specify for example --label=-1-1,string, the  string  is	entirely
	  visible, having the lower right border of its bounding box in the bot-
	  tom  right corner on the image.  Long multiline strings should prefer-
	  ably be passed by specifying this option several times (e.g. for  each
	  line	separately)  because  of  limitations of the option parser.  See
	  also STRING ESCAPES.

     --vlabel=[+-][+-]y,string
	  same as the --label option, but prints  the  string  vertically.   See
	  also STRING ESCAPES.

     --legend=string
	  print  string  outside  the image region black on white. The legend is
	  either placed right or botto. of the image depending on the  ratio  of
	  the  resulting  total image (smaller ratio wins).  The string can be a
	  multiline string separated by '\n', e.g.  "this\nis\nmultiline\ntext".
	  The extra space needed for the legend is reserved automatically.  Long
	  multiline  strings  should preferably be passed by specifying this op-
	  tion several times (e.g. for each line separately) because of  limita-
	  tions  of  the  option  parser. The string can be reset to zero length
	  (e.g. for multifile input together with modelines) by  using	--legend
	  w/o string argument.	See also STRING ESCAPES.

     -F, --font=integer
	  font	size.  Must  be between (inclusive) 1 and 4. If the font size is
	  not specified, it is chosen  according  to  the  image  dimensions:  a
	  larger  image  gets  a larger font size.  This switch selects one of 4
	  built-in fonts.  For pretty  fonts  you  should  rather  use	truetype
	  fonts, see below.

     -F, --font=float,fontspec
	  truetype  font  with	the  size given by the float parameter. The font
	  specification can be either a ttf file name (must end in .ttf or .TTF)
	  or a fontconfig specification (only available if --version shows font-
	  config). If a ttf file is specified, it must be an absolute  or  rela-
	  tive path like ./arial.ttf.  If the ttf file has no path specification
	  (e.g.  arial.ttf)  it is searched in directories given by the environ-
	  ment variable GDFONTPATH. Examples:

	      -F20,./arial.ttf
	      -F20,/path/to/arial.ttf
	      -F20,times:bold:italic	  # only available if fontconfig is available

     -T, --textcolor=xxxxxx
	  The xxxxxx must be given as 6-digit  or  3-digit  hexadecimal  number,
	  where  the  first  digit(s) are the red value, the second two digit(s)
	  the green value and the last two digit(s) the blue value (so the color
	  values for each color are between 0 and ff). Note that zimg  will  try
	  to  choose  a color out of the existing color map which comes close to
	  what you've specified, but depending on the color map  you  might  not
	  get exactly what you've requested. Alternatively the color can be also
	  specified  by one of the predefined color names, see the section "LINE
	  COLORS".  If the text color is not given, it will be chosen  automati-
	  cally and should give normally a high contrast.

     --line=[+-]x1[+-]y1[+-]x2[+-]y2[...]
	  draw	a  line or polyline from x1, y1 to x2, y2 (and more vertices) on
	  the FINAL image.  Example --line=+10+10+10+20 draws a horizontal line.
	  All coordinates are absolute.  Negative  coordinates	are  interpreted
	  from the right and bottom border respectively.

     --rline=[+-]x1[+-]y1[+-]x2[+-]y2[...]
	  same	as  --line, but all coordinates except x1 and x2 are interpreted
	  relatively to x1 and x2.

     -L, --license
	  Display some license information. zimg is published under the terms of
	  a BSD type License.

     -V, --version
	  Prints a version identifier for zimg to standard error. This is  guar-
	  anteed  to  always  contain  the string "zimg" and the version number.
	  Additionally the string "png" or "gif"  indicates  the  output  format
	  which depends on the gd driver which was compiled in. Compile time op-
	  tions as edf support are appended in brackets.

     -v, --verbose
	  switch on some informational output. Might not be too useful.

     --statistics
	  print histogram like statistics of the processed data to stderr.

     --help
	  Prints a help message to stderr and dies.

STRING ESCAPES
     The switches --label, --vlabel and --legend accept some string escapes. The
     replacement of these string escape takes place after the data has been read
     and  processed.  String  escape start with a percent sign '%' followed by a
     single character which indicates the type of the substitution. The  follow-
     ing string escapes are supported:

     %c   Current time in RFC822-conformant format.

     %f   The filename of the input file

     %m   The minimum of the processed data.

     %M   The maximum of the processed data.

     %i   The  integral  of the processed data (valid data points only, see also
	  the --no-data switch).

     %{...}
	  Will be substituted with the standard  output  of  the  shell  command
	  which is given between the opening { and the closing }.

LINE COLORS
     Some  of  the  switches  accept  a  color	specification,	e.g.  --no-data,
     --align, --contours, --textcolor and --xor.  These "line  colors"	are  not
     chosen  from the colormap which is used for rendering the data. Line colors
     can be specified either as 6-digit or 3-digit hex value or as  one  of  the
     predefined  strings  "black",  "white",  "red", "green", "blue", "magenta",
     "cyan", "yellow".	In the case of a 6-digit hex value, the first two digits
     represent the red value, the second two digits the green value and the last
     two digits the blue value.  In the case of a 3-digit hex value,  the  first
     digit  represent  the  red  value, the second digit the green value and the
     last digit the blue value.

MODELINES
     If the input data is ascii (or at least the header is  ascii),  zimg  looks
     for  modelines  like some versions of vi or vim do. This is done only until
     the first data point is read. The format for modelines is as follows:
		<space>zimg:<zimg options>:
     You can have multiple modelines and even use a modeline to switch to binary
     input. Example:

		#!/usr/local/bin/zimg
		# zimg: -l10 -C50-550x200-450:
		# zimg: -m7,5,15 -t -r547x633 -s --swap:
		...
     Note that in this case the order is important. Everything	after  the  line
     containing the -s (unsigned short binary) is considered as binary data.  So
     exchanging  the  two modelines like in the next example would interpret the
     second modeline as binary data (which is probably not what you want):
		#!/usr/local/bin/zimg
		# zimg: -m7,5,15 -t -r547x633 -s --swap:
		# zimg: -l10 -C50-550x200-450:
		...

EXAMPLES
     zimg my.dat > my.png
	  This one of the most simple examples.  The file my.dat is  assumed  to
	  hold	the dimensions of your 2-D data as the first two convertable in-
	  tegers.  Everything before the first convertable integer  is	silently
	  skipped,  so it is also valid to have the dimension specifiers after a
	  comment (hash) mark like this:
	      # 128 128
	      45.12
	      76.70
	      ...

     my.dat > my.png
	  If your operating system supports the specification of an  interpreter
	  by preceding it with #! you can make your data file an executable like
	  this	(you probably have also to change the permissions of my.dat e.g.
	  `chmod +x my.dat' on UNIX):

	      #!/usr/local/bin/zimg
	      # 128 128
	      # zimg:--red:
	      45.12
	      76.70
	      ...

     zimg my.dat.gz | xv -
	  pipe the output of zimg directly to your favorite image viewer  (here:
	  xv). The file will be filtered by gunzip.

     zimg --red -r1200x1200 --skip=2400 -S0.5 -s l408_01.image | xv -
	  read	binary	data  which hold 1200 x 1200 unsigned short data values.
	  Skip the first 2400 bytes.  Use the red scale color  map.   Scale  the
	  image down to 600 x 600 pixels and pipe it to xv.

	  Note	that the skip option is not really necessary as long as the data
	  is located at the very end of the input file.  In this case the header
	  size would be calculated by zimg.

     zimg my.png --xlabel=10,10,'love is like oxygen' --jpeg > my.jpg
	  read the png as source image, apply a label and write it as jpeg.

     zimg -P -o- --crange=0,100 *.edf | animate -delay 50
	  read all edf files, and animate them with delay of 50 ms.

     zimg -P -o- --scale=0.25 --gray *.edf | convert -delay 100 - movie.mng
	  read all edf files, scale them down and convert them into a gray scale
	  movie (mng is an animated png). Note that  not  using  --crange  makes
	  color  scaling (z-range) individually autoscaled in each image instead
	  of using the same z-range for all images as in the previous example.

     zimg for displaying function expressions w/o input data

	  First you've to create the c source which holds the  function  expres-
	  sion, for example sinc.c:

	      #include <zimg.h>
	      #include <math.h>
	      float
	      zimg_expression(unsigned int x, unsigned int y,
		  float z, const zimg_expression_info_t* info)
	      {
		 double width = (double)info->width;
		 double height = (double)info->height;
		 double xd = (double)x - width * 0.5;
		 double yd = (double)y - height * 0.5;
		 double value;
		 xd *= 10 / width;
		 yd *= 10 / height;
		 value = sqrt(xd*xd+yd*yd);
		 return value ? sin(value) / value : 1
	      }

	  This	expression can be displayed w/o any data file by using /dev/zero
	  as input source. As the input data is not used at all, you can use the
	  -c switch -- tell zimg to  treat  the  input	as  bytes.   Furthermore
	  you've to specify the dimension of the image with the -r switch:

	  # zimg -c -r300 --skip=0 -Rsinc.c -Osinc.so < /dev/zero | xv -

	  The  object  file  sinc.so  can now be reused in subsequent zimg runs,
	  e.g.

	  # zimg -c -r500 --skip=0 -Osinc.so < /dev/zero | xv -

	  Note, that you have to tell zimg  explicitly	not  to  skip  the  file
	  header,  otherwise it will read from /dev/zero infinitely as it thinks
	  it is the data header.

ENVIRONMENT VARIABLES
     HOME
	  When this variable is found, zimg looks there for a file with the name
	  .zimgrc which may contain command line options.  If expression evalua-
	  tion support is compiled in, object files are searched in  the  direc-
	  tory $HOME/.zimg/expr/.

     ZIMG_VIEWER
	  used	to  view  stdout, if zimg detects that stdout goes to a terminal
	  (which is probably not what you want). Defaults to "xv -".

FILES
     The following zimgrc resource files are read in this order:

	 /usr/local/etc/zimgrc
	 $HOME/.zimgrc
	 .zimgrc
	 zimgrc

     These files are read before command line parsing is done, so command line
     options given on the command line will eventually overwrite previously defined
     settings of the resource files.

     The zimgrc recource files might contain command line options separated by
     any white spaces including newlines. Blank lines and everything behind a hash
     `#' mark is considered to be a comment.

BUGS
     probably.

SEE ALSO
     The official zimg web site at:

	 http://zimg.sourceforge.net/

AUTHOR
     Johannes Zellner <johannes@zellner.org>

HISTORY
     This version of zimg was originally derived from the  program  z2ppm  which
     was able to write portable pixmap (ppm) files.

CREDITS
     Thomas Boutell <boutell@boutell.com>, the author of the gd driver.

     Petr Mikulik <mikulik@physics.muni.cz> for the color code in getcolor.c,
     see also
       http://www.sci.muni.cz/~mikulik/gnuplot.html,  the OS/2 port, and options
       --crange, -P, --ppm, --pgm, -o-.

     Levente Novak <novak@jaguar.dote.hu> for the DOS/DJGPP port.

Johannes Zellner		      5.0.0				 ZIMG(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=zimg&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help