# pamdice

Updated: 27 May 2025
Table Of Contents

## NAME

pamdice - slice a Netpbm image into many horizontally and/or vertically

## EXAMPLE

In these examples, myimage.ppm is an image that is 10,000 pixels wide and 8,000 pixels high.

        $ pamdice myimage.ppm -width=1000 -height=1000 -outstem=myimage_part
        $ pamundice myimage_part_%1d_%1a.ppm -across=10 -down=8 >myimage.ppm

        $ pamdice myimage.ppm -height=1000 -voverlap=90 -outstem=myimage_part

        $ pamdice myimage.ppm -width=1000 -height=1000 -outstem=myimage_part \
            -listfile=tiles.txt
        $ pamundice -across=10 -down=8 -listfile=tiles.txt >myimage.ppm

        $ pamdice myimage.ppm -width=1000 -height=1000 -outstem=myimage_part \
            -indexfile=tiles.pam
        $ pamundice myimage_part_%1d_%1a.ppm -indexfile=tiles.pam >myimage.ppm

## SYNOPSIS

pamdice -outstem=filenamestem [-outsuffix=filenamesuffix] [-width=width] [-height=height] [-hoverlap=hoverlap] [-voverlap=voverlap] [-numberwidth=N] [-listfile=textfilename] [-indexfile=pamfilename [-dry-run] [-verbose] [filename]

You can use the minimum unique abbreviation of the options. You can use two hyphens instead of one. You can separate an option name from its value with white space instead of an equals sign.

## DESCRIPTION

This program is part of Netpbm.

pamdice reads a PAM, PBM, PGM, or PPM image as input and splits it horizontally and/or vertically into equal size pieces and writes them into separate files as the same kind of image. You can optionally make the pieces overlap.

See the -outstem option for information on naming of the output files.

The -width and -height options determine the size of the output pieces.

pamundice can rejoin the images. For finer control, you can also use pamcat.

One use for this is to make pieces that take less computer resources than the whole image to process. For example, you might have an image so large that an image editor can't read it all into memory or processes it very slowly. With pamdice, you can split it into smaller pieces, edit one at a time, and then reassemble them.

Another use for this is to print a large image in small printer-sized pieces that you can glue together. ppmglobe does a similar thing; it lets you glue the pieces together into a sphere.

If you want to cut pieces from an image individually, not in a regular grid, use pamcut.

## OPTIONS

In addition to the options common to all programs based on libnetpbm (most notably -quiet, see Common Options), pamdice recognizes the following command line options:

-outstem=filenamestem
  This option determines the names of the output files. Each output file is named filenamestem_y_x.type, where filenamestem is the value of the -outstem option, x and y are the horizontal and vertical locations, respectively, in the input image of the output image, zero being the leftmost and top, and type is .pbm, .pgm, .ppm, or .pam, depending on the type of image.

  x and y are filled with leading zeroes so are the same width in every file. Use -numberwidth to specify that width; otherwise, it defaults to the minimum width that works for all the files. For example, if you have 25 slices across and no -numberwidth, x is 2 digits for all the output files. The leftmost slice is numbered "00"; the next one is "01", etc. With -numberwidth=3, x is "000", "001", etc.

  You can override the file type suffix with an -outsuffix option.

-outsuffix=filenamesuffix
  This specifies the suffix for the output file names. pamdice does not add a period.

  Example: `-outsuffix=.pnm`

  The default is an appropriate suffix for the image type, e.g. ".ppm".

  This option was new in Netpbm 11.11 (June 2025).

-numberwidth=N
  This option determines the width of the numbers in the output file names. See the -outstem option for details.

  It is not valid to specify a width less than is necessary to represent all the slices.

  This option was new in Netpbm 11.10 (March 2025).

-width=width
  This gives the width in pixels of the output images. The rightmost pieces are smaller than this if the input image is not a multiple of width pixels wide.

  If you don't specify this, the default is the entire width of the image; i.e. pamdice does not split vertically.

-height=height
  This gives the height in pixels of the output images. The bottom pieces are smaller than this if the input image is not a multiple of height pixels high.

  If you don't specify this, the default is the entire height of the image; i.e. pamdice does not split horizontally.

-hoverlap=hoverlap
  This gives the horizontal overlap in pixels between output images. Each image in a row will overlap the previous one by hoverlap pixels. By default, there is no overlap.

  This option was new in Netpbm 10.23 (July 2004).

-voverlap=voverlap
  This gives the vertical overlap in pixels between output images. Each row of images will overlap the previous row by voverlap pixels. By default, there is no overlap.

  This option was new in Netpbm 10.23 (July 2004).

-listfile=textfilename
  This causes the program to generate a file listing the names of all the tile files it creates. It is in row-major order. For example, `$ pamdice -width=100 -height=100 -outstem=myimage_part -listfile=mylist.txt \ -numberwidth=3 myimage.ppm` on a 200x200 image generates the file mylist.txt containing this:

          myimage_part_000_000.ppm
          myimage_part_000_001.ppm
          myimage_part_001_000.ppm
          myimage_part_001_001.ppm

  You can use this list file with pamundice -listfile in lieu of an input file name pattern argument, which may save you the trouble of coordinating the patterns used in your invocations of pamdice and pamundice.

  This option was new in Netpbm 11.10 (March 2025).

-indexfile=pamfilename
  This causes the program to generate a file containing a PAM image that contains rank and file numbers for the tiles. It is simply an image whose width and height are the number of horizontal and vertical slices, respectively, in which each tuple is just the row and column number of that tuple. For example, if pamdice produces 3 slices across and 2 down, the image looks like this:

              (0,0) (0,1) (0,2)
              (1,0) (1,1) (1,2)

  The depth of the image is 2, the tuple type is "grid_coord" (a tuple type invented for use with pamdice and pamundice), and the maxval is 255 unless the height or width is greater than 256, in which case it is 65535.

  This image can be useful as input to pamundice, particularly after doing transformations on it. The prime example of such usage is in flipping a large image. You can dice the image with pamdice, then flip each of the tiles produced (with pamflip), then flip the index image (again with pamflip), then use pamundice with the flipped tiles and the flipped index image to generate a flipped version of the original large image.

  This option was new in Netpbm 11.10 (March 2025).

-dry-run
  This makes pamdice skip creating the output tile images. It still creates the list file (with -listfile) and the index file (with -indexfile) and checks for most errors.

  This option was new in Netpbm 11.10 (March 2025).

-verbose
  Print information about the processing to Standard Error.

## HISTORY

pamdice was new in Netpbm 9.25 (March 2002).

Before Netpbm 10.29 (August 2005), there was a limit of 100 slices in each direction, and the output file names always used two digits for the slice number.

## SEE ALSO

pamundice, pamcut, pamcat, pgmslice, ppmglobe pamflip pnm pam

## Table Of Contents

- EXAMPLE
- SYNOPSIS
- DESCRIPTION
- OPTIONS
- HISTORY
- SEE ALSO