scanimage - scan an image
scanimage [-d|--device-name dev] [--format format] [-i|--icc-profile=PROFILE] [-L|--list-
devices] [-f|--formatted-device-list format] [--batch[=FORMAT]] [--batch-start=#]
[--batch-count=#] [--batch-increment=#] [--batch-double] [--accept-md5-only] [-n|--dont-
scan] [-T|--test] [-h|--help] [-v|--verbose] [-V|--version] [device-specific-options]
scanimage is a command-line interface to control image acquisition devices such as flatbed
scanners or cameras. The device is controlled via command-line options. After command-
line processing, scanimage normally proceeds to acquire an image. The image data is writ-
ten to standard output in one of the PNM (portable aNyMaP) formats (PBM for black-and-
white images, PGM for grayscale images, and PPM for color images) or in TIFF (black-and-
white, grayscale or color). scanimage accesses image acquisition devices through the SANE
(Scanner Access Now Easy) interface and can thus support any device for which there exists
a SANE backend (try "apropos sane-" to get a list of available backends).
The -d or --device-name options must be followed by a SANE device-name like
"epson:/dev/sg0" or "hp:/dev/usbscanner0". A (partial) list of available devices can be
obtained with the --list-devices option (see below). If no device-name is specified
explicitly, scanimage reads a device-name from the environment variable
SANE_DEFAULT_DEVICE. If this variable is not set, scanimage will attempt to open the
first available device.
The --format format selects how image data is written to standard output. format can be
pnm or tiff to select file format PNM or TIFF. If --format is not used, PNM is written.
The -i or --icc-profile option is used to include an ICC profile into a TIFF file.
The -L or --list-devices option requests a (partial) list of devices that are available.
The list is not complete since some devices may be available, but are not listed in any of
the configuration files (which are typically stored in directory /etc/sane.d). This is
particularly the case when accessing scanners through the network. If a device is not
listed in a configuration file, the only way to access it is by its full device name. You
may need to consult your system administrator to find out the names of such devices.
The -f or --formatted-device-list option works similar to --list-devices, but requires a
format string. scanimage replaces the placeholders %d %v %m %t %i with the device name,
vendor name, model name, scanner type and an index number respectively. The command
scanimage -f "scanner number %i device %d is a %t, model %m, produced by %v"
will produce something like:
scanner number 0 device sharp:/dev/sg1 is a flatbed scanner, model JX250 SCSI,
produced by SHARP
The --batch* options provide the features for scanning documents using document feeders.
--batch[=FORMAT] is used to specify the format of the filename that each page will be
written to. Each page is written out to a single file. If the FORMAT is not specified,
the default of out%d.pnm (or out%d.tif for --format tiff) will be used. FORMAT is given
as a printf style string with one integer parameter. --batch-start=# selects the page
number to start naming files with. If this option is not given, the counter will start at
0. --batch-count=# specifies the number of pages to attempt to scan. If not given, scan-
image will continue scanning until the scanner returns a state other than OK. Not all
scanners with document feeders signal when the ADF is empty, use this command to work
around them. With --batch-increment=# you can change the amount that the number in the
filename is incremented by. Generally this is used when you are scanning double-sided
documents on a single-sided document feeder. A specific command is provided to aid this:
--batch-double will automatically set the increment to 2.
The --accept-md5-only option only accepts user authorization requests that support MD5
security. The SANE network daemon (saned) is capable of doing such requests. See saned(1)
The -n or --dont-scan option requests that scanimage only sets the options provided by the
user but doesn't actually perform a scan. This option can be used to e.g. turn off the
scanner's lamp (if supported by the backend).
The -T or --test option requests that scanimage perform a few simple sanity tests to make
sure the backend works as defined by the SANE API (in particular the sane_read function is
excercised by this test).
The -h or --help options request help information. The information is printed on standard
output and in this case, no attempt will be made to acquire an image.
The -v or --verbose options increase the verbosity of the operation of scanimage. The
option may be specified repeatedly, each time increasing the verbosity level.
The -V or --version option requests that scanimage prints the program and package name,
the version number of the SANE distribution that it came with and the version of the back-
end that it loads. Usually that's the dll backend. If more information about the version
numbers of the backends are necessary, the DEBUG variable for the dll backend can be used.
Example: SANE_DEBUG_DLL=3 scanimage -L.
As you might imagine, much of the power of scanimage comes from the fact that it can con-
trol any SANE backend. Thus, the exact set of command-line options depends on the capa-
bilities of the selected device. To see the options for a device named dev, invoke scan-
image via a command-line of the form:
scanimage --help --device-name dev
The documentation for the device-specific options printed by --help is best explained with
a few examples:
--brightness -100..100% 
Controls the brightness of the acquired image.
The description above shows that option --brightness expects an option value in the
range from -100 to 100 percent. The value in square brackets indicates that the
current option value is 0 percent.
Set default values for enhancement controls.
The description above shows that option --default-enhancements has no option value.
It should be thought of as having an immediate effect at the point of the command-
line at which it appears. For example, since this option resets the --brightness
option, the option-pair --brightness 50 --default-enhancements would effectively be
--mode Lineart|Gray|Color [Gray]
Selects the scan mode (e.g., lineart or color).
The description above shows that option --mode accepts an argument that must be one
of the strings Lineart, Gray, or Color. The value in the square bracket indicates
that the option is currently set to Gray. For convenience, it is legal to abbrevi-
ate the string values as long as they remain unique. Also, the case of the spell-
ing doesn't matter. For example, option setting --mode col is identical to --mode
Determines whether a builtin or a custom gamma-table
should be used.
The description above shows that option --custom-gamma expects either no option
value, a "yes" string, or a "no" string. Specifying the option with no value is
equivalent to specifying "yes". The value in square-brackets indicates that the
option is not currently active. That is, attempting to set the option would result
in an error message. The set of available options typically depends on the set-
tings of other options. For example, the --custom-gamma table might be active only
when a grayscale or color scan-mode has been requested.
Note that the --help option is processed only after all other options have been
processed. This makes it possible to see the option settings for a particular mode
by specifying the appropriate mode-options along with the --help option. For exam-
ple, the command-line:
scanimage --help --mode color
would print the option settings that are in effect when the color-mode is selected.
Gamma-correction table. In color mode this option
equally affects the red, green, and blue channels
simultaneously (i.e., it is an intensity gamma table).
The description above shows that option --gamma-table expects zero or more values
in the range 0 to 255. For example, a legal value for this option would be
"3,4,5,6,7,8,9,10,11,12". Since it's cumbersome to specify long vectors in this
form, the same can be expressed by the abbreviated form "3-12". What this
means is that the first vector element is set to 3, the 9-th element is set to 12
and the values inbetween are interpolated linearly. Of course, it is possible to
specify multiple such linear segments. For example, "3-3-7,10-6" is
equivalent to "3,3,3,4,5,6,7,10,8,6". The program gamma4scanimage can be used to
generate such gamma tables (see man gamma4scanimage for details).
--filename <string> [/tmp/input.ppm]
The filename of the image to be loaded.
The descriptoin above is an example of an option that takes an arbitrary string
value (which happens to be a filename). Again, the value in brackets show that the
option is current set to the filename /tmp/input.ppm.
The default device-name.
This directory holds various configuration files. For details, please refer to the
manual pages listed below.
This file contains lines of the form
scanimage uses this information to answer user authorization requests automati-
cally. The file must have 0600 permissions or stricter. You should use this file in
conjunction with the --accept-md5-only option to avoid server-side attacks. The
resource may contain any character but is limited to 127 characters.
sane(7), gamma4scanimage(1), xscanimage(1), xcam(1), xsane(1), scanadf(1), sane-dll(5),
David Mosberger, Andreas Beck, Gordon Matzigkeit and Caskey Dickson
For vector options, the help output currently has no indication as to how many elements a
vector-value should have.
11 Sep 2002 scanimage(1)