convert(1) convert(1)
CONVERT
NAME
convert - convert an image or sequence of images
SYNOPSIS
convert [ options ... ] input_file output_file
DESCRIPTION
Convert converts an input file using one image format to an output file with a differing
image format. In addition, various types of image processing can be performed on the con-
verted image during the conversion process. Convert recognizes the image formats listed in
ImageMagick(1).
EXAMPLES
To make a thumbnail of a JPEG image, use:
convert -size 120x120 cockatoo.jpg -resize 120x120
+profile "*" thumbnail.jpg
In this example, '-size 120x120' gives a hint to the JPEG decoder that the image is going
to be downscaled to 120x120, allowing it to run faster by avoiding returning full-resolu-
tion images to ImageMagick for the subsequent resizing operation. The output image. It
will be scaled so its largest dimension is 120 pixels. The that might be present in the
input and aren't needed in the thumbnail.
To convert a MIFF image of a cockatoo to a SUN raster image, use:
convert cockatoo.miff sun:cockatoo.ras
To convert a multi-page PostScript document to individual FAX pages, use:
convert -monochrome document.ps fax:page
To convert a TIFF image to a PostScript A4 page with the image in the lower left-hand cor-
ner, use:
convert -page A4+0+0 image.tiff document.ps
To convert a raw Gray image with a 128 byte header to a portable graymap, use:
convert -depth 8 -size 768x512+128 gray:raw
image.pgm
In this example, "raw" is the input file. Its format is "gray" and it has the dimensions
and number of header bytes specified by the -size option and the sample depth specified by
the -depth option. The output file is "image.pgm". The suffix ".pgm" specifies its for-
mat.
To convert a Photo CD image to a TIFF image, use:
convert -size 1536x1024 img0009.pcd image.tiff
convert img0009.pcd[4] image.tiff
To create a visual image directory of all your JPEG images, use:
convert 'vid:*.jpg' directory.miff
To annotate an image with blue text using font 12x24 at position (100,100), use:
convert -font helvetica -fill blue
-draw "text 100,100 Cockatoo"
bird.jpg bird.miff
To tile a 640x480 image with a JPEG texture with bumps use:
convert -size 640x480 tile:bumps.jpg tiled.png
To surround an icon with an ornamental border to use with Mosaic(1), use:
convert -mattecolor "#697B8F" -frame 6x6 bird.jpg
icon.png
To create a MNG animation from a DNA molecule sequence, use:
convert -delay 20 dna.* dna.mng
OPTIONS
Options are processed in command line order. Any option you specify on the command line
remains in effect for the set of images that follows, until the set is terminated by the
appearance of any option or -noop. Some options only affect the decoding of images and
others only the encoding. The latter can appear after the final group of input images.
For a more detailed description of each option, see Options, above. ImageMagick(1).
-adjoin
join images into a single multi-image file
-affine
drawing transform matrix
-antialias
remove pixel aliasing
-append
append a set of images
-authenticate
decrypt image with this password
-average
average a set of images
-background
the background color
-blue-primary ,
blue chromaticity primary point
-blur {x}
blur the image with a Gaussian operator
-border x
surround the image with a border of color
-bordercolor
the border color
-box
set the color of the annotation bounding box
-cache
(This option has been replaced by the -limit option)
-channel
the type of channel
-charcoal
simulate a charcoal drawing
-chop x{+-}{+-}{%}
remove pixels from the interior of an image
-clip apply the clipping path, if one is present
-coalesce
merge a sequence of images
-colorize
colorize the image with the fill color
-colors
preferred number of colors in the image
-colorspace
the type of colorspace
-combine
combine one or more images into a single image
-comment
annotate an image with a comment
-compose
the type of image composition
-compress
the type of image compression
-contrast
enhance or reduce the image contrast
-convolve
convolve image with the specified convolution kernel
-crop x{+-}{+-}{%}
preferred size and location of the cropped image
-cycle
displace image colormap by amount
-debug
enable debug printout
-deconstruct
break down an image sequence into constituent parts
-define {=},...
add coder/decoder specific options
-delay <1/100ths of a second>
display the next image after pausing
-delete
delete the image from the image sequence
-density x
horizontal and vertical resolution in pixels of the image
-depth
depth of the image
-despeckle
reduce the speckles within an image
-display
specifies the X server to contact
-dispose
GIF disposal method
-dither
apply Floyd/Steinberg error diffusion to the image
-draw
annotate an image with one or more graphic primitives
-edge
detect edges within an image
-emboss
emboss an image
-encoding
specify the text encoding
-endian
specify endianness (MSB or LSB) of the image
-enhance
apply a digital filter to enhance a noisy image
-equalize
perform histogram equalization to the image
-evaluate
evaluate an arithmetic, relational, or logical expression
-fill
color to use when filling a graphic primitive
-filter
use this type of filter when resizing an image
-flatten
flatten a sequence of images
-flip create a "mirror image"
-flop create a "mirror image"
-font
use this font when annotating the image with text
-frame x+ bevel width>+ bevel width>
surround the image with an ornamental border
-fuzz {%}
colors within this distance are considered equal
-fx
apply a mathematical expression an image or image channels
-gamma
level of gamma correction
-Gaussian {x}
blur the image with a Gaussian operator
-geometry x{+-}{+-}{%}{@} {!}{<}{>}
preferred size and location of the Image window.
-gravity
direction primitive gravitates to when annotating the image.
-green-primary ,
green chromaticity primary point
-help print usage instructions
-implode
implode image pixels about the center
-insert
insert last image into the image sequence
-intent
use this type of rendering intent when managing the image color
-interlace
the type of interlacing scheme
-label
assign a label to an image
-lat x{+-}{%}
perform local adaptive thresholding
-level {%}{,}{%}{,}
adjust the level of image contrast
-limit
Area, Disk, File, Map, or Memory resource limit
-list
the type of list
-log
Specify format for debug log
-loop
add Netscape loop extension to your GIF animation
-map
choose a particular set of colors from this image
-mask
Specify a clipping mask
-matte store matte channel if the image has one
-mattecolor
specify the color to be used with the -frame option
-median
apply a median filter to the image
-modulate
vary the brightness, saturation, and hue of an image
-monochrome
transform the image to black and white
-morph
morphs an image sequence
-mosaic
create a mosaic from an image or an image sequence
-negate
replace every pixel with its complementary color
-noise
add or reduce noise in an image
-normalize
transform image to span the full range of color values
-opaque
change this color to the fill color within the image
-page x{+-}{+-}{%}{!}{<}{>}
size and location of an image canvas
-paint
simulate an oil painting
-pen
(This option has been replaced by the -fill option)
-ping efficiently determine image characteristics
-pointsize
pointsize of the PostScript, OPTION1, or TrueType font
-posterize
reduce the image to a limited number of color levels
-preview
image preview type
-process
process a sequence of images using a process module
-profile
add ICM, IPTC, or generic profile to image
-quality
JPEG/MIFF/PNG compression level
-radial-blur angle
radial blur the image
-raise x
lighten or darken image edges
-red-primary ,
red chromaticity primary point
-region x{+-}{+-}
apply options to a portion of the image
-render
render vector operations
-repage x{+-}{+-}{%}{!}{<}{>}
size and location of an image canvas. This option is like -page but act as an
image operator rather than a setting.
-resample x
Resample image to specified horizontal and vertical resolution
-resize x{%}{@}{!}{<}{>}
resize an image
-roll {+-}{+-}
roll an image vertically or horizontally
-rotate {<}{>}
apply Paeth image rotation to the image
-sample
scale image using pixel sampling
-sampling-factor x
sampling factors used by JPEG or MPEG-2 encoder and YUV decoder/encoder.
-scale
scale the image.
-scene
set scene number
-segment threshold>x threshold>
segment an image
-shade x
shade the image using a distant light source
-sharpen {x}
sharpen the image
-shave x{%}
shave pixels from the image edges
-shear degrees>x degrees>
shear the image along the X or Y axis
-size x{+offset}
width and height of the image
-solarize
negate all pixels above the threshold level
-splice x{+-}{+-}{%}>
splice the background color into the image
-spread
displace image pixels by a random amount
-strip strip the image of any profiles or comments
-stroke
color to use when stroking a graphic primitive
-strokewidth
set the stroke width
-swap
swap two images in the image sequence
-swirl
swirl image pixels about the center
-texture
name of texture to tile onto the image background
-threshold {,,}{%}
threshold the image
-thumbnail x{%}{@}{!}{<}{>}
create a thumbnail of the image
-tile
tile image when filling a graphic primitive
-tint
tint the image with the fill color
-transform
transform the image
-transparent
make this color transparent within the image
-treedepth
tree depth for the color reduction algorithm
-trim trim an image
-type
the image type
-units
the units of image resolution
-unsharp {x}{+}{+}
sharpen the image with an unsharp mask operator
-use-pixmap
use the pixmap
-verbose
print detailed information about the image
-version
print ImageMagick version string
-view
FlashPix viewing parameters
-virtual-pixel
specify contents of "virtual pixels"
-wave x
alter an image along a sine wave
-white-point ,
chromaticity white point
-write
write an image sequence [convert, composite]
For a more detailed description of each option, see Options, above. ImageMag-
ick(1).
SEGMENTATION
Use -segment to segment an image by analyzing the histograms of the color components and
identifying units that are homogeneous with the fuzzy c-means technique. The scale-space
filter analyzes the histograms of the three color components of the image and identifies a
set of classes. The extents of each class is used to coarsely segment the image with
thresholding. The color associated with each class is determined by the mean color of all
pixels within the extents of a particular class. Finally, any unclassified pixels are
assigned to the closest class with the fuzzy c-means technique.
The fuzzy c-Means algorithm can be summarized as follows:
Build a histogram, one for each color component of the image.
For each histogram, successively apply the scale-space filter and build an interval tree
of zero crossings in the second derivative at each scale. Analyze this scale-space "fin-
gerprint" to determine which peaks or valleys in the histogram are most predominant.
The fingerprint defines intervals on the axis of the histogram. Each interval contains
either a minima or a maxima in the original signal. If each color component lies within
the maxima interval, that pixel is considered "classified" and is assigned an unique class
number.
Any pixel that fails to be classified in the above thresholding pass is classified using
the fuzzy c-Means technique. It is assigned to one of the classes discovered in the his-
togram analysis phase.
The fuzzy c-Means technique attempts to cluster a pixel by finding the local minima of the
generalized within group sum of squared error objective function. A pixel is assigned to
the closest class of which the fuzzy membership has a maximum value.
For additional information see: Young Won Lim, Sang Uk Lee, ''On The Color Image Seg-
mentation Algorithm Based on the Thresholding and the Fuzzy c-Means Techniques'', Pattern
Recognition, Volume 23, Number 9, pages 935-952, 1990.
ENVIRONMENT
COLUMNS
Output screen width. Used when formatting text for the screen. Many Unix systems
keep this shell variable up to date, but it may need to be explicitly exported in
order for ImageMagick to see it.
DISPLAY
X11 display ID (host, display number, and screen in the form hostname:dis-
play.screen).
HOME Location of user's home directory. ImageMagick searches for configuration files in
$HOME/.magick if the directory exists. See MAGICK_CODER_MODULE_PATH, MAGICK_CONFIG-
URE_PATH, and MAGICK_FILTER_MODULE_PATH if more flexibility is needed.
MAGICK_CODER_MODULE_PATH
Search path to use when searching for image format coder modules. This path allows
the user to arbitrarily extend the image formats supported by ImageMagick by adding
loadable modules to an arbitrary location rather than copying them into the
ImageMagick installation directory. The formatting of the search path is similar to
operating system search paths (i.e. colon delimited for Unix, and semi-colon delim-
ited for Microsoft Windows). This user specified search path is used before trying
the default search path.
MAGICK_CONFIGURE_PATH
Search path to use when searching for configuration (.mgk) files. The formatting
of the search path is similar to operating system search paths (i.e. colon delim-
ited for Unix, and semi-colon delimited for Microsoft Windows). This user specified
search path is used before trying the default search path.
MAGICK_DEBUG
Debug options (see -debug for details)
MAGICK_FILTER_MODULE_PATH
Search path to use when searching for filter process modules (invoked via -pro-
cess). This path allows the user to arbitrarily extend ImageMagick's image process-
ing functionality by adding loadable modules to an arbitrary location rather than
copying them into the ImageMagick installation directory. The formatting of the
search path is similar to operating system search paths (i.e. colon delimited for
Unix, and semi-colon delimited for Microsoft Windows). This user specified search
path is used before trying the default search path.
MAGICK_FONT_PATH
Directory where ImageMagick should look for TrueType and Postscript Type1 font
files if the font file is not found in the current directory. It is preferred to
define the available fonts via type.mgk rather than use MAGICK_FONT_PATH.
MAGICK_HOME
Path to top of ImageMagick installation directory. Only observed by "uninstalled"
builds of ImageMagick which do not have their location hard-coded or set by an
installer.
MAGICK_DISK_LIMIT
Maximum amount of disk space allowed for use by the pixel cache.
MAGICK_FILES_LIMIT
Maximum number of open files.
MAGICK_MAP_LIMIT
Maximum size of a memory map.
MAGICK_MEMORY_LIMIT
Maximum amount of memory to allocate from the heap.
MAGICK_TMPDIR
Path to directory where ImageMagick should write temporary files. The default is to
use the system default, or the location set by TMPDIR.
TMPDIR For POSIX-compatible systems (Unix-compatible), the path to the directory where all
applications should write temporary files. Overridden by MAGICK_TMPDIR if it is
set.
TMP or TEMP
For Microsoft Windows, the path to the directory where applications should write
temporary files. Overridden by MAGICK_TMPDIR if it is set.
CONFIGURATION FILES
ImageMagick uses a number of XML format configuration files:
colors.mgk
colors configuration file
delegates.mgk
delegates configuration file
log.mgk
logging configuration file
magic.mgk
file header magic test configuration file
modules.mgk
loadable modules configuration file
type.mgk
master type (fonts) configuration file
SEE ALSO
display(1), animate(1), identify(1), ImageMagick(1), montage(1), mogrify(1), composite(1)
COPYRIGHT
Copyright (C) 1999-2004 ImageMagick Studio LLC. Additional copyrights and licenses apply
to this software, see http://www.imagemagick.org/www/Copyright.html
ImageMagick Date: 2004/01/01 01:00:00 convert(1)
Thread(3) Perl Programmers Reference Guide Thread(3)
NAME
Thread - manipulate threads in Perl (for old code only)
CAVEAT
Perl has two thread models.
In Perl 5.005 the thread model was that all data is implicitly shared and shared access to
data has to be explicitly synchronized. This model is called "5005threads".
In Perl 5.6 a new model was introduced in which all is was thread local and shared access
to data has to be explicitly declared. This model is called "ithreads", for "interpreter
threads".
In Perl 5.6 the ithreads model was not available as a public API, only as an internal API
that was available for extension writers, and to implement fork() emulation on Win32 plat-
forms.
In Perl 5.8 the ithreads model became available through the "threads" module.
Neither model is configured by default into Perl (except, as mentioned above, in Win32
ithreads are always available.) You can see your Perl's threading configuration by run-
ning "perl -V" and looking for the use...threads variables, or inside script by "use Con-
fig;" and testing for $Config{use5005threads} and $Config{useithreads}.
For old code and interim backwards compatibility, the Thread module has been reworked to
function as a frontend for both 5005threads and ithreads.
Note that the compatibility is not complete: because the data sharing models are directly
opposed, anything to do with data sharing has to be thought differently. With the
ithreads you must explicitly share() variables between the threads.
For new code the use of the "Thread" module is discouraged and the direct use of the
"threads" and "threads::shared" modules is encouraged instead.
Finally, note that there are many known serious problems with the 5005threads, one of the
least of which is that regular expression match variables like $1 are not threadsafe, that
is, they easily get corrupted by competing threads. Other problems include more insidious
data corruption and mysterious crashes. You are seriously urged to use ithreads instead.
SYNOPSIS
use Thread;
my $t = Thread->new(\&start_sub, @start_args);
$result = $t->join;
$result = $t->eval;
$t->detach;
if ($t->done) {
$t->join;
}
if($t->equal($another_thread)) {
# ...
}
yield();
my $tid = Thread->self->tid;
lock($scalar);
lock(@array);
lock(%hash);
lock(\&sub); # not available with ithreads
$flags = $t->flags; # not available with ithreads
my @list = Thread->list; # not available with ithreads
use Thread 'async';
DESCRIPTION
The "Thread" module provides multithreading support for perl.
FUNCTIONS
$thread = Thread->new(\&start_sub)
$thread = Thread->new(\&start_sub, LIST)
"new" starts a new thread of execution in the referenced subroutine. The optional
list is passed as parameters to the subroutine. Execution continues in both the
subroutine and the code after the "new" call.
"Thread->new" returns a thread object representing the newly created thread.
lock VARIABLE
"lock" places a lock on a variable until the lock goes out of scope.
If the variable is locked by another thread, the "lock" call will block until it's
available. "lock" is recursive, so multiple calls to "lock" are safe--the vari-
able will remain locked until the outermost lock on the variable goes out of
scope.
Locks on variables only affect "lock" calls--they do not affect normal access to a
variable. (Locks on subs are different, and covered in a bit.) If you really,
really want locks to block access, then go ahead and tie them to something and
manage this yourself. This is done on purpose. While managing access to vari-
ables is a good thing, Perl doesn't force you out of its living room...
If a container object, such as a hash or array, is locked, all the elements of
that container are not locked. For example, if a thread does a "lock @a", any
other thread doing a "lock($a[12])" won't block.
With 5005threads you may also "lock" a sub, using "lock &sub". Any calls to that
sub from another thread will block until the lock is released. This behaviour is
not equivalent to declaring the sub with the "locked" attribute. The "locked"
attribute serializes access to a subroutine, but allows different threads non-
simultaneous access. "lock &sub", on the other hand, will not allow any other
thread access for the duration of the lock.
Finally, "lock" will traverse up references exactly one level. "lock(\$a)" is
equivalent to "lock($a)", while "lock(\\$a)" is not.
async BLOCK;
"async" creates a thread to execute the block immediately following it. This
block is treated as an anonymous sub, and so must have a semi-colon after the
closing brace. Like "Thread->new", "async" returns a thread object.
Thread->self
The "Thread->self" function returns a thread object that represents the thread
making the "Thread->self" call.
cond_wait VARIABLE
The "cond_wait" function takes a locked variable as a parameter, unlocks the vari-
able, and blocks until another thread does a "cond_signal" or "cond_broadcast" for
that same locked variable. The variable that "cond_wait" blocked on is relocked
after the "cond_wait" is satisfied. If there are multiple threads "cond_wait"ing
on the same variable, all but one will reblock waiting to reaquire the lock on the
variable. (So if you're only using "cond_wait" for synchronization, give up the
lock as soon as possible.)
cond_signal VARIABLE
The "cond_signal" function takes a locked variable as a parameter and unblocks one
thread that's "cond_wait"ing on that variable. If more than one thread is blocked
in a "cond_wait" on that variable, only one (and which one is indeterminate) will
be unblocked.
If there are no threads blocked in a "cond_wait" on the variable, the signal is
discarded.
cond_broadcast VARIABLE
The "cond_broadcast" function works similarly to "cond_signal". "cond_broadcast",
though, will unblock all the threads that are blocked in a "cond_wait" on the
locked variable, rather than only one.
yield The "yield" function allows another thread to take control of the CPU. The exact
results are implementation-dependent.
METHODS
join "join" waits for a thread to end and returns any values the thread exited with.
"join" will block until the thread has ended, though it won't block if the thread
has already terminated.
If the thread being "join"ed "die"d, the error it died with will be returned at
this time. If you don't want the thread performing the "join" to die as well, you
should either wrap the "join" in an "eval" or use the "eval" thread method instead
of "join".
eval The "eval" method wraps an "eval" around a "join", and so waits for a thread to
exit, passing along any values the thread might have returned. Errors, of course,
get placed into $@. (Not available with ithreads.)
detach "detach" tells a thread that it is never going to be joined i.e. that all traces
of its existence can be removed once it stops running. Errors in detached threads
will not be visible anywhere - if you want to catch them, you should use
$SIG{__DIE__} or something like that.
equal "equal" tests whether two thread objects represent the same thread and returns
true if they do.
tid The "tid" method returns the tid of a thread. The tid is a monotonically increas-
ing integer assigned when a thread is created. The main thread of a program will
have a tid of zero, while subsequent threads will have tids assigned starting with
one.
flags The "flags" method returns the flags for the thread. This is the integer value
corresponding to the internal flags for the thread, and the value may not be all
that meaningful to you. (Not available with ithreads.)
done The "done" method returns true if the thread you're checking has finished, and
false otherwise. (Not available with ithreads.)
LIMITATIONS
The sequence number used to assign tids is a simple integer, and no checking is done to
make sure the tid isn't currently in use. If a program creates more than 2**32 - 1
threads in a single run, threads may be assigned duplicate tids. This limitation may be
lifted in a future version of Perl.
SEE ALSO
threads::shared (not available with 5005threads)
attributes, Thread::Queue, Thread::Semaphore, Thread::Specific (not available with
ithreads)
perl v5.8.8 2001-09-21 Thread(3)
|