PPMLABEL(1)

πŸ“¦
version 11.13.03 Β· 4 versions
, in debian bookworm, debian trixie, ubuntu noble, ubuntu resolute, ubuntu stonking

πŸ’– ppmlabel β€” the manual, but make it cute πŸ’–

okay bestie, so this is ppmlabel, from the Ppmlabel User Manual, section 1 of the General Commands Manual. it literally just adds text to a PPM image and honestly? she serves. let's get into it πŸ’…


✨ NAME ✨

ppmlabel β€” add text to a PPM image πŸŽ€


✨ SYNOPSIS ✨

ppmlabel

[-angle angle]

[-background { transparent | color } ]

[-color color]

[-file filename]

[-size

textsize]

[-text text_string]

[-x column]

[-y row]

...

[ppmfile]

🌸 EXAMPLE 🌸

okay so here's the vibe, look:

ppmlabel -x 50 -y 50 -text hello \
         -angle -30 -text there \
         testimg.ppm

πŸ¦‹ DESCRIPTION πŸ¦‹

This program is part of Netpbm(1). 🫢

ppmlabel uses the text drawing facilities of libnetpbm's "ppmd" component to add text to a PBM image. You control the location, size, baseline angle, color of the text, and background color (if any) with command line arguments. You can specify the text on the command line or supply it in files. (yes, both. no, she's not picky. she's ✨flexible✨.)

You can add any number of separate labels in a single invocation of ppmlabel, limited only by any restrictions your environment has on the number and size of program arguments (e.g. a shell's command size limit). so like, go off, but also your shell said "that's enough bestie" at some point. 😭

If you don't specify ppmfile, ppmlabel reads its input PPM image from Standard Input.

The output image goes to Standard Output. periodt.

A more sophisticated way to add a label to an image is to use pbmtext or pbmtextps to create an image of the text, then pamcomp to overlay it onto the base image. iykyk.

Another more general program is ppmdraw. It is slightly harder to use for simple labelling. lowkey a lot of power, highkey more work. πŸ™ˆ


πŸ’… OPTIONS πŸ’…

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

The arguments on the ppmlabel command line are not options in the strict sense; they are commands which control the placement and appearance of the text being added to the input image. They are executed left to right, and any number of arguments may appear. so like, order matters, bestie. read them like a sentence. πŸ“–

You can abbreviate any option to its shortest unique prefix. slay.

  • -angle angle β€” This option sets the angle of the baseline of subsequent text. angle is an integral number of degrees, measured counterclockwise from the row axis of the image. ✨
  • -background { transparent | color } β€” If the argument is transparent, ppmlabel draws the text over the existing pixels in the image. If you specify a color (see the -color option below for information on how to specify colors), ppmlabel generates background rectangles enclosing subsequent text, and those rectangles are filled with that color. so it's giving "no notes" vs "here's a whole lil box for you" πŸ’–
  • -color color β€” This option sets the color for subsequent text.

Specify the color (color) as described for the argument of the pnm_parsecolor() library routine.

-colour is an acceptable alternate spelling. (because apparently we're doing both. we love options.) πŸ‡¬πŸ‡§

  • -file filename β€” This option causes ppmlabel to read lines of text from the file named filename and draw it on successive lines. πŸ“„
  • -size textsize β€” This option sets the height of the tallest characters above the baseline to textsize pixels.
  • -text text_string β€” This option causes ppmlabel to draw the specified text string. It advances the location for subsequent text down 1.75 times the current textsize. That lets you draw multiple lines of text in a reasonable manner without specifying the position of each line. queen behavior honestly πŸ‘‘

Note that if you invoke ppmlabel via a shell command and your text string contains spaces, you'll have to quote it so the shell treats the whole string as a single token. E.g.

$ ppmlabel -text "this is my text" baseimage.ppm >annotatedimage.ppm
⚠️ no cap on this one β€” unquoted spaces and your shell will split that string into a million lil tokens and everything falls apart. use the quotes. πŸ’€
  • -x column β€” This option sets the pixel column at which subsequent text will be left justified. Depending on the shape of the first character, the actual text may begin a few pixels to the right of this point. so like, approximately here. she's doing her best. 🫢
  • -y row β€” This option sets the pixel row which will form the baseline of subsequent text. Characters with descenders, such as "y," will extend below this line. yes, they dangle. that's the whole point. 🌸

😭 LIMITATIONS 😭

Text strings are restricted to 7 bit ASCII. The text font used by ppmlabel doesn't include definitions for 8 bit ISO 8859/1 characters. so no fancy accented glyphs, she simply does not have them. πŸ’€

When drawing multiple lines of text with a non-transparent background, it should probably fill the space between the lines with the background color. This is tricky to get right when the text is rotated to a non-orthogonal angle. like… bestie tried. it's genuinely hard. πŸ™ˆ


πŸŽ€ SEE ALSO πŸŽ€

ppmmake(1), ppmdraw(1), pbmtext(1), pbmtextps(1), pamcomp(1), ppm(1)


πŸ‘‘ AUTHOR πŸ‘‘

Copyright (C) 1995 by John Walker (kelvin@fourmilab.ch) WWW home page: http://www.fourmilab.ch/

Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, without any conditions or restrictions. This software is provided ``as is'' without express or implied warranty. (very generous, very iconic, we stan πŸ’œ)


🧚 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/ppmlabel.html

and that's the whole thing bestie!! πŸ’–βœ¨ this was netpbm documentation, dated 15 April 2006, and the original footer said Ppmlabel User Manual(1) β€” go add some text to some pixels, you absolute legend πŸ¦‹πŸ’…πŸŒΈ

πŸ“¦ where this page comes from