PAMCUT(1)
๐ธ PAMCUT โ bestie, let's cut some pixels ๐ธ
okay so first things first: welcome to the Pamcut User Manual, section 1 of the General Commands Manual. That's the header, bestie โ we're in the Unix manual pages, and today's topic is iconic. Sit down, grab a snack ๐, and let's get into it. This is gonna be so good, no cap.
โจ NAME โจ
pamcut โ select a rectangular region of a PAM, PBM, PGM, or PPM image ๐
๐ SYNOPSIS ๐
pamcut
[-left colnum]
[-right colnum]
[-top rownum]
[-bottom rownum]
[-width cols]
[-height rows]
[-pad]
[-cropleft numcols]
[-cropright numcols]
[-croptop numrows]
[-cropbottom numrows]
[-reportonly]
[-verbose]
[left top width height]
[pnmfile]
Minimum unique abbreviations of options are acceptable โจ (so yeah, you can shorten stuff, as long as it's uniquely identifiable, iykyk). You may use double hyphens instead of a single hyphen to denote options. You may use white space in place of the equals sign to separate an option name from its value. We love a flexible queen ๐
๐ฆ DESCRIPTION ๐ฆ
This program is part of Netpbm(1) ๐ โ one of the family, a whole little squad.
pamcut reads a PAM, PBM, PGM, or PPM image as input, extracts the specified rectangle, and produces the same kind of image as output. Same kind, same vibe, just... cropped ๐
You can specify either the rectangle to cut out and keep OR the edges to crop off and discard โ or honestly a combination, because we contain multitudes ๐
If you wanna say which edges to yeet: use the options -cropleft, -cropright, -croptop, and -cropbottom to indicate how many rows or columns to discard.
Like, for example, -cropleft=50 -cropright=200 means to discard the leftmost 50 and rightmost 200 columns. Gone. Poof. Not invited to the output ๐
If you wanna say which rectangle to keep: use the -left, -right, -top, -bottom, -width, -height, and -pad options.
For example, -left=50 -right=200 means to keep the 151 columns between Columns 50 and 200 inclusive. Inclusive, bestie! Both endpoints are in ๐
You can code any mixture of the options โจ What you don't specify defaults. Those defaults are in favor of minimal cutting and in favor of cutting the right and bottom edges off and (with -pad) minimal padding and padding on the right and bottom. It is an error to overspecify, i.e. to specify all three of -left, -right, and -width or -top, -bottom, and -height or right as well as -cropright. So like... know when to stop typing, queen ๐
๐ฐ๏ธ the positional-arg lore (aka the old way)
There is an older way to specify the rectangle to keep: positional arguments. Arguments were the only way available before July 2000, but you should not use them in new applications ๐ซ Options are easier to remember and read, more expressive, and allow you to use defaults. So basically options ate and left no crumbs, and arguments are lowkey retired.
If you use both options and arguments, the two specifications get mixed in an unspecified way ๐ญ (translation: chaos, don't do that).
To use arguments, specify all four of the left, top, width, and height arguments. left and top have the same effect as specifying them as the argument of a -left or -top option, respectively. width and height have the same effect as specifying them as the argument of a -width or -height option, respectively, where they are positive. Where they are not positive, they have the same effect as specifying one less than the value as the argument to a -right or -bottom option, respectively. (E.g. width = 0 makes the cut go all the way to the right edge). Before July 2000, negative numbers were not allowed for width and height.
๐ input/output & streams
Input is from Standard Input if you don't specify the input file pnmfile. Output is to Standard Output ๐ซถ
pamcut works on a multi-image stream. It cuts each image in the stream independently and produces a multi-image stream output โจ Before Netpbm 10.32 (March 2006), it ignored all but the first image in the stream. So if you're on something ancient... it was giving "only child" energy.
If you are splitting a single image into multiple same-size images, pamdice is faster and easier than running pamcut multiple times ๐
pamcomp is also useful for cutting and padding an image to a certain size. You create a background image of the desired frame dimensions and overlay the subject image on it. Very collage, very scrapbook ๐
๐ OPTIONS ๐
In addition to the options common to all programs based on libnetpbm (most notably -quiet, see Common Options), pamcut recognizes the following command line options:
-left=colnumโ the column number of the leftmost column to be in the output. Columns left of this get cut out. If a nonnegative number, it refers to columns numbered from 0 at the left, increasing to the right. If negative, it refers to columns numbered-1at the right, decreasing to the left. So yeah, negative indexing but make it pixel columns โจ-right=colnumโ the column number of the rightmost column to be in the output, numbered the same as for-left. Columns to the right of this get cut out. Bye bye, edge ๐-top=rownumโ the row number of the topmost row to be in the output. Rows above this get cut out. If a nonnegative number it refers to rows numbered from 0 at the top, increasing downward. If negative, it refers to columns numbered-1at the bottom, decreasing upward.-bottom=rownumโ the row number of the bottom-most row to be in the output, numbered the same as for-top. Rows below this get cut out.-width=colsโ the number of columns to be in the output. Must be positive โ ๏ธ-height=rowsโ the number of rows to be in the output. Must be positive โ ๏ธ-cropleftโ how many columns to crop from the left edge ๐ซถ-croprightโ how many columns to crop from the right edge.-croptopโ how many rows to crop from the top edge.-cropbottomโ how many rows to crop from the bottom edge.
These options tell how many rows or columns to crop from the left, right, top, or bottom edges, respectively.
The value must not be negative.
These option were new in Netpbm 10.85 (December 2018). Before that, you can achieve the same thing with -left, top, and negative values for -right and -bottom. Remember to subtract one in the latter case; e.g. the equivalent of -cropright=1 is -right=-2. Math is math, bestie ๐งฎ
-padโ if the rectangle you specify is not entirely within the input image,pamcutfails unless you also specify-pad. In that case, it pads the output with black up to the edges you specify. You can use this option if you need to have an image of certain dimensions and have an image of arbitrary dimensions ๐ค
pnmpad also adds borders to an image, but you specify their width directly.
pamcomp does a more general form of this padding. Create a background image of the frame dimensions and overlay the subject image on it. You can use options to have the subject image in the center of the frame or against any edge and make the padding any color (the padding color is the color of the background image) ๐
-reportonlyโ this causespamcutto write to Standard Output a description of the cutting it would have done instead of producing an output image. See below for a description of this output and ways to use it.
That description is one line of text, containing 8 decimal numbers of pixels, separated by spaces:
- column number of left cut
- column number of right cut
- row number of top cut
- row number of bottom cut
- width of input image
- height of input image
- width of output image
- height of output image
The column number of the left cut is the column number in the input image of the leftmost column of the output image. for the right cut, it is for the rightmost column of the output. Top and bottom are analogous.
The column and row numbers can be negative if you specified -pad and pamcut would have added padding. Likewise, they can be beyond the right and bottom edge of the input image. So like, don't panic if the numbers look feral ๐
Example:
10 109 -1 98 150 80 100 100
This option was new in Netpbm 11.06 (March 2024). Fresh off the press โจ
-verboseโ print information about the processing to Standard Error. For when you need the commentary track ๐๏ธ
๐ SEE ALSO ๐
pnmcrop(1), pamdice(1), pamcomp(1), pnmpad(1), pamcat(1), pgmslice(1), pnm(1)
The whole friend group ๐ซ go say hi.
๐ HISTORY ๐
pamcut was derived from pnmcut in Netpbm 9.20 (May 2001). It was the first Netpbm program adapted to the new PAM format and programming library. Trailblazer behavior, honestly ๐
The predecessor pnmcut was one of the oldest tools in the Netpbm package. Respect your elders ๐
๐ AUTHOR ๐
Copyright (C) 1989 by Jef Poskanzer.
๐ 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/pamcut.html
and that's the whole page, bestie ๐ go forth and crop responsibly. This was netpbm documentation, dated 26 February 2024 โ and yeah, this is the Pamcut User Manual(1), so you know it's official ๐ โจ๐ฆ
๐ฆ where this page comes from
- debian trixie: netpbm 2:11.10.02-1 ยท MIT
- ubuntu resolute: netpbm 2:11.10.02-1build1 ยท MIT
- ubuntu stonking: netpbm 2:11.13.03+ds-2 ยท MIT
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms