dwww Home | Manual pages | Find package

Pamshuffle User Manual(1)   General Commands Manual   Pamshuffle User Manual(1)

Updated:

NAME
       pamshuffle - Shuffle pixels of a Netpbm image

SYNOPSIS
       pamshuffle [-column [-randomseed integer]] [pamfile]

       Minimum unique abbreviations of option are acceptable.  You may use dou-
       ble  hyphens  instead  of  single hyphen to denote options.  You may use
       white space in place of the equals sign to separate an option name  from
       its value.

DESCRIPTION
       This program is part of Netpbm(1).

       pamshuffle  reads  a  Netpbm  image as input and produces an output file
       with the pixels shuffled.  The operation only changes  the  location  of
       existing pixels; nothing is discarded or added.

       By  default, pixels change location within rows independently, but it is
       also possible to perform the same shuffle on every row, meaning the pro-
       gram is shuffling vertical columns of pixels.  Either way, there  is  no
       vertical  rearrangement;  this means images consisting entirely of hori-
       zontal stripes, such as the national banners of  Germany,  Thailand  and
       Ukraine, will be unchanged.

       To shuffle vertically, or to perform a complete scramble, use pamshuffle
       together with pamflip.  See examples below.

       Input  is  from  Standard Input if you don't specify the input file pam-
       file.

       Output is to Standard Output.

       pamshuffle works on a multi-image stream.  It operates on each image  in
       the stream independently and produces a multi-image stream output.

       The shuffling algorithm is the widely known ]8;;https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle\ Fisher-Yates method]8;;\ .

OPTIONS
       In  addition  to  the  options common to all programs based on libnetpbm
       (most notably -quiet, see ]8;;index.html#commonoptions\ Common Options]8;;\ ), pamshuffle  recognizes  the
       following command line options:

       -column
              Shuffle  vertical  columns, i.e. perform the same movement on all
              rows.  Without this option, the program shuffles each  row  inde-
              pendently.

       -randomseed= integer
              This  is  the seed for the random number generator that generates
              the pixels.

              Use this to ensure you get the same  image  on  separate  invoca-
              tions.

              By  default,  pamshuffle uses a seed derived from the time of day
              and process ID, which gives you  quite  uncorrelated  results  in
              multiple invocations.

EXAMPLES
       In the following example, output is to Standard Output.  You will proba-
       bly want to add redirection to somewhere useful.

       •

              pamshuffle  is useful when you want to randomize the orderly out-
              put of image generators such as pamseq and pgmramp.

              Produce five permutations of integers 0 to 15:

              pgmramp -lr -maxval=15 16 5 | pamshuffle -plain

       •      Shuffle columns:

              pamshuffle -column image.ppm

       •      Shuffle rows:

              pamflip -cw image.ppm | pamshuffle | pamflip -ccw

       •      Perform complete shuffle:

              pamflip -cw image.ppm | pamshuffle | pamflip -ccw | pamshuffle

SEE ALSO
       pamseq(1), pgmramp(1), pamflip(1), ppmshift(1), ppmspread(1), pam(1)

HISTORY
       pamshuffle was new in Netpbm 10.99 (June 2022).

AUTHOR
       By Akira F. Urushibata.  Contributed to the public domain by the author.

DOCUMENT SOURCE
       This manual page was generated by the Netpbm tool  'makeman'  from  HTML
       source.  The master documentation is at

              http://netpbm.sourceforge.net/doc/pamshuffle.html

netpbm documentation                                  Pamshuffle User Manual(1)

Generated by dwww version 1.16 on Tue Dec 16 06:14:27 CET 2025.