pnmpad1
Add borders to a pnm image
Usage
pnmpad [-color=color [-promote={none|format|all}] |-detect-background |-extend-edge |-white |-black ] [-width=pixels] [-halign=ratio] [-mwidth=pixels] [-left=pixels] [-right=pixels] [-height=pixels] [-valign=ratio] [-mheight=pixels] [-top=pixels] [-bottom=pixels] [-reportonly] [-verbose] [pnmfile]
Overview
This program is part of Netpbm(1) .
pnmpad reads a Netpbm image as input and outputs a PNM image that is the input image plus borders of the color and sizes specified.
You can use pamcomp to add borders of any content - solid color,
pattern, or whatever. For example, if you wanted to add 10 pixels of
rainbow borders to the top and bottom of a 100x100 image, you could create a
100x120 rainbow image (e.g. with ppmrainbow) and then
use pamcomp to insert your 100x100 image into the center of it.
Options
In addition to the options common to all programs based on libnetpbm (most notably -quiet, see
Common Options ⟨index.html#commonoptions⟩ ), pnmpad recognizes the following command line options:
All options can be abbreviated to their shortest unique prefix. You may use two hyphens instead of one to designate an option. You may use either white space or an equals sign between an option name and its value.
-
-color=color
-
-detect-background
-
-extend-edge
-
-white
-
-black -
This specifies the color of the padding. color is like the argument of the
pnm_parsecolor()library routine ⟨libnetpbm_image.html#colorname⟩ .-detect-backgroundmeans the program uses the color of the top left pixel of the input as the pad color. Note that this could cause odd results if you aren't padding the top or left of the image.You may specify only one of
-white,-black,-color, and-detect-background.-extend-edgesays to pad by duplicating the adjacent edge of the image pixel by pixel. E.g. if the top row of the image is 20 white pixels followed by 10 black pixels, every row of padding added to the top of the image is 20 white pixels followed by 20 black pixels.By default, the padding is black.
-whiteand-blackare for backward compatibility; they do the same thing as-color=whiteand-color=blackrespectively (except that the latter fail if you don't have a color dictionary set up in your environment, so they are really more like-color=rgbi:0/0/0and-color=rgbi:1/1/1.-color,-detect-background, and-extend-edgewere new with Netpbm 11.05 (December 2023).
-
-left=pixels
-
-right=pixels
-
-width=width
-
-halign=ratio
-
-mwidth=pixels -
Specify amount of left and right padding in pixels.
-leftand-rightdirectly specify the amount of padding added to the left and right sides, respectively, of the image.Alternatively, you can specify
-widthand just one of-leftand-rightandpnmpadcalculates the required padding on the other side to make the output width pixels wide. If the-widthvalue is less than the width of the input image plus the specified padding,pnmpadignores-width.If you specify all three of
-width,-left, and-right, you must ensure that the-leftand-rightpadding are sufficient to make the image at least as wide as-widthspecifies, and in that case-widthhas no effect on the output. Otherwise,pnmpadfails.When you specify
-widthwithout-leftor-right, and-widthis larger than the input image,pnmpadchooses left and right padding amounts in a certain ratio. That ratio defaults to half, but you can set it to anything (from 0 to 1) with the-halignoption. If the input image is already at least as wide as-widthspecifies,pnmpadadds no padding.Common values for
-halignare:
0.0-
left aligned
0.5-
center aligned (default)
1.0-
right aligned
-mwidth=pixels says to pad to a multiple of pixels pixels. E.g. if pixels is 10, the output image width will be a multiple of 10 pixels.pnmpadadds to whatever padding the other options say to do to get to this multiple. It divides that padding between the left and right sides of the image to maintain the ratio the other options produce. E.g. if you say -left=10 -right=10 -mwidth=50 with a 100-pixel image, you end up with a 150-pixel image with the extra padding split evenly between left and right for a total of 25 pixels of padding on the left and 25 on the right. If the other options indicate no padding,pnmpadadds padding in the ratio specified by-halignand if-halignis not specified, equally on both sides.Before Netpbm 10.97 (December 2021),
pnmpaddoes not allow-halignwith-mwidthand adds padding only on the right when-mwidthis specified and the other options indicate no padding.Before Netpbm 10.72 (September 2015), there is no
-mwidth.Before Netpbm 10.23 (July 2004),
pnmpaddid not allow the-leftor-rightoption together with-width.
-
-top=pixels
-
-bottom=pixels
-
-height=height
-
-valign=ratio
-
-mheight=pixels -
These options determine the vertical padding. They are analogous to the horizontal padding options above.
-
-promote={none|format|all} -
This option tells what to do when the
-coloroption specifies a color that cannot be represented in the input format, which ordinarily is also the output format. For example, if the input is PGM (which can represent only shades of gray), and you specify-color=red, shouldpnmpadmake the padding gray or make the output PPM?
none-
Make the output have the same format and maxval as the input.
Adjust the pad color to the nearest color possible in that format
(black, white, or a shade of gray).
format-
Make the output have the same maxval as the input, but make
the output format PPM if the pad color is not black, white, or gray.
all-
Make the format and maxval of the output capable of representing the
pad color. Make the format the least expressive format capable of
representing the pad color. Make the maxval the larger of 255 and
the maxval of the input image.The default is
-promote=all.Note that this promotion happens even if no actual padding happens, meaning it isn't really necessary. The promotion is based on what would be required to represent padding of the specified color.
This option is valid only when you also specify
-color.This option was new in Netpbm 11.05 (December 2023).
-
-reportonly -
This causes
pnmpadto write to Standard Output a description of the
padding it would have done instead of producing an output image. Seebelow ⟨#reportonly⟩ for a description of this output and ways
to use it.This option was new in Netpbm 10.89 (December 2019).
-
-verbose -
This causes verbose messages.
Report only
When you specify -reportonly, pnmpad does not produce an
output image. Instead, it writes to Standard Output a description of the
padding it would have done without -reportonly.
That description is one line of text, containing 6 decimal numbers of
pixels, separated by spaces:
•
|
left padding |
|---|---|
•
|
right padding |
•
|
top padding |
•
|
bottom padding |
•
|
output width |
•
|
output height |
Example:
<span style="font-family: monospace">
4 3 0 2 100 100
</span>
One use for this is to make padding which is fancier than the black and
white that pnmpad can do.
In the following example, we pad an image with 10 pixels of gray all
around, without knowing the original image dimensions beforehand. We do
this by generating a gray image with pbmmake and then pasting the
subject image into the middle of it.
The example uses shell arrays, such as exist in Bash, but not Dash.
pad=($(pnmpad -reportonly -left=10 -right=10 -top=10 -bottom=10 input.ppm))pbmmake -gray ${pad[4]} ${pad[5]} | \pnmpaste input.ppm ${pad[0]} ${pad[2]} -
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/pnmpad.html
Releases
16 releases since Debian 2.0 (Hamm); the text changed 5 times.
-black since Debian 3.1 (Sarge);
-bottom since Debian 3.1 (Sarge);
-color since Debian 13 (Trixie);
-detect-background since Debian 13 (Trixie);
-extend-edge since Debian 13 (Trixie);
-halign since Debian 3.1 (Sarge);
-height since Debian 3.1 (Sarge);
-left since Debian 3.1 (Sarge);
-mheight since Debian 12 (Bookworm);
-mwidth since Debian 12 (Bookworm);
-promote since Debian 13 (Trixie);
-reportonly since Debian 12 (Bookworm);
-right since Debian 3.1 (Sarge);
-top since Debian 3.1 (Sarge);
-valign since Debian 3.1 (Sarge);
-verbose since Debian 3.1 (Sarge);
-white since Debian 3.1 (Sarge);
-width since Debian 3.1 (Sarge).