econvert

Langue: en

Autres versions - même langue

Version: 262449 (debian - 07/07/09)

Section: 1 (Commandes utilisateur)

NAME

econvert - Image converter of the ExactImage library

SYNOPSIS

econvert [--background] [--bicubic-scale] [--bilinear-scale] [--blur] [--box-scale] [--brightness] [--colorspace] [--compress] [--contrast] [--convolve] [--crop] [--ddt-scale] [--decompress] [--deinterlace] [--deskew] [--edge] [--fast-auto-crop] [--flip] [--flop] [--floyd-steinberg] [--foreground] [--gamma] [--hue] [-i|--input INPUT] [--lightness] [--line] [--nearest-scale] [--negate] [--normalize] [-o|--output OUTPUT] [--quality] [--resolution] [--riemersma] [--rotate] [--saturation] [--scale] [--size] [--split] [--text]

econvert --help

DESCRIPTION

ExactImage is a fast C++ image processing library. Unlike ImageMagick, it allows operation in several color spaces and bit depths natively, resulting in much lower memory and computational requirements. Some optimized algorithms operate in 1/20 of the time ImageMagick requires, and displaying large images can be as fast as 1/10 of the time the "display" program takes.

econvert is a command line frontend for the image processing library and mimicks Imagemagick's convert. However since some aspects of the convert arguments are too limited (e.g. even now we have two ditherizers to select from) or annoying (colorspace conversion is quite unintuitive to control with Imagemagick and the data is often blown up to an more generic colorspace) the econvert syntax never will be 1:1 compatible with convert. Also because those options only start with one dash (-) ... or are named density rather than resolution and so on.

OPTIONS

--background
Background color used for operations.
--bicubic-scale
Scale image data with bi-cubic filter.
--bilinear-scale
Scale image data with bi-linear filter.
--blur
Gaussian blur.
--box-scale
(Down)scale image data with box filter.
--brightness
Change image brightness.
--colorspace
Convert image colorspace (BW, BILEVEL, GRAY, GRAY1, GRAY2, GRAY4, RGB, YUV, CYMK).
--compress
Compression method for writing images (e.g. G3, G4, Zip, ...) depending on the output format, a reasonable setting by default.
--contrast
Change image contrast.
--convolve
Convolution matrix.
--crop
Crop an area out of an image: x,y,w,h.
--ddt-scale
Scale image data with data dependant triangulation.
--decompress
Decompression method for reading images (e.g. thumb) depending on the input format, allowing to read partial data.
--deinterlace
Shuffleg every 2nd line.
--deskew
Deskew digitalized paper.
--edge
Edge detect filter.
--fast-auto-crop
Fast auto crop.
--flip
Flip the image vertically.
--flop
Flip the image horizontally.
--floyd-steinberg
Floyd Steinberg dithering using n shades.
--foreground
Foreground color used for operations.
--gamma
Change image gamma.
--hue
Change image hue.
-i|--input INPUT
Input file or '-' for stdin, optionally prefixed with format: e.g: jpg:- or raw:rgb8-dump.
--lightness
Change image lightness.
--line
Draw a line: x1, y1, x2, y2.
--nearest-scale
Scale image data to nearest neighbour.
--negate
Negates the image.
--normalize
Transform the image to span the full color range.
-o|--output OUTPUT
Output file or '-' for stdout, optinally prefix with format: e.g. jpg:- or raw:rgb8-dump.
--quality
Quality setting used for writing compressed images integer range 0-100, the default is 75.
--resolution
Set meta data resolution in dpi to x[xy] e.g. 200 or 200x400.
--riemersma
Riemersma dithering using n shades.
--rotate
Rotation angle.
--saturation
Change image saturation.
--scale
Scale image data using a method suitable for specified factor.
--size
Width and height of raw images whose dimensions are unknown.
--split
Filenames to save the images split in Y-direction into n parts.
--text
Draw text: x1, y1, height, text.
--help
Displays help text and exits.

EXAMPLES

Basics

First image data must be read using -i or --input, processing routines are selected by their name with two leading dashes (e.g. --rotate) and at any point the data might be written into a file with -o or --output, for example:

$ econvert -i lenea.tiff --box-scale 0.5 -o medium.png --box-scale 0.5 -o little.png

Since version 0.3 the library tries to delay image decoding as much as possible and provides lossless and accelerated algorithms to work on compressed data (such as JPEGs) directly:

$ econvert -i AV220-Scan.JPG --resolution 300x300 -o 1.jpg --rotate 90 -o 2.jpg --rotate 180 -o 3.jpg --rotate -90 -o 4.jpg --flip -o 5.jpg --flop -o 6.jpg --scale 0.25 -o thumb.jpg

In this example 1.jpg will be created from the original JPEG DCT coefficients, those coefficients will be rearranged and 2.jpg, 3.jpg, 4.jpg, 5.jpg and 6.jpg will be written without any additional loss in precision (no new JPEG artefacts) and with outstanding speed. Only at the end, for image thumb.jpg, the DCT will actually be decoded - but due to the accelerated JPEG scaling only partially! The whole chain of operations applied to an 8 bit RGB JPEG only takes 0.99s on 2GHz Intel Core2.

Thumbnails of black and white (bi-level) images

When 1 bit, black and white, images are scaled down the output often might look pretty awful. The box scaling algorithm usually does a pretty good job thumbnailing b/w images, however as the ExactImage algorithms always operate in the color-space the image data is stored in the colorspace must be changed (e.g. to 8 bit gray) before applying the box scaler. At the end the result might be converted back to just a few shades of gray such as 2 or 4 bit:

$ econvert -i avision-bw-scan.pbm --colorspace gray8 --box-scale 0.125 --colorspace gray2 -o thumb.png

Slightly faster JPEG down-scaling

As outlined in the lossless JPEG page, ExactImage is slightly slower than EPEG, though with noticeable higher output quality. If you do not care about quality, only about bare thruput (maybe in an web application?) you can force nearest neighbor scaling by just specifing a scale factor the JPEG decoder can accellerate (1/2, 1/4, or 1/8) and apply the remaining scalling manually. To archive a faster scaling with the effective factor 0.33:

$ econvert -i big.jpg --scale .5 --nearest-scale 0.66 -o thumb.jpg

Working with digital camera RAW data

Digital still camera raw images differ from model to model and are sometimes even obfuscated to prevent loading by third parties. However, ExactImage supports a wide range of RAW formats thanks to the embedded dcraw code (we had to embed a copy of dcraw as the orignal project is only available as a command line program and not in form of a library - ExactImage needs to have some more control about how the image data is passed around, e.g. in memory and not by pipes).

Usually decoding of RAW data should be transparent and automatic, however some formats also are valid TIFF files and the embedded thumbnail might be picked by ExactImage's TIFF support in favour of the actual RAW content. This this cases the dcraw backend decoder can explicitly be request with the decoder prefix of the input parameter:

$ econvert -i dcraw:img_0123.cr2 ...

As of version 0.6.5 ExactImage also allows to quickly extract the embedded thumbnail preview, if any, by specifing "thumb"(nail) as decompress argument before the image is loaded:

$ econvert --decompress thumb -i dcraw:img_0123.cr2 ...

This usually just takes parts of a second and is useful to generate previews, galleries, etc.

Loading real raw data

While working on algorithms, dumping frame-buffer content or doing low-level driver development it often is handy to also load arbitrary RAW pixel data. Via the "raw:" codec specification this is possible in econvert. As econvert does use the current color-depth (colorspace) and size for the raw data they have to be specified before loading the image like this:

$ econvert --size 1696x32 --colorspace rgb8 -i raw:data-file ...

SEE ALSO

exactimage(7)

bardecode(1)

e2mtiff(1)

edentify(1)

empty-page(1)

hocr2pdf(1)

optimize2bw(1)

HOMEPAGE

More information about econvert and the ExactImage project can be found at <http://www.exactcode.de/site/open_source/exactimage/>.

AUTHOR

ExactImage was written by ExactCODE GmbH <http://www.exactcode.de/>.

This manual page was written by Daniel Baumann <daniel@debian.org>, for the Debian project (but may be used by others).