- 1. I received the following message, "??????
translation failed ...". What does it mean?
- ImageMagick uses several freely available packages to perform the
translation of certain image formats (PostScript, PICT, etc.).
Make sure these packages are available as described in the
README
file. Also verify that you have plenty of temporary disk space.
If not, set the TMPDIR environment variable to an area where space
is available. Finally, for PostScript, verify that Ghostscript
supports the pnmraw or ppmraw device (gs -h) and that
the document contains valid PostScript statements (gs image.ps).
- 2. How can I improve the appearance of 24-bit images
displayed on my colormapped X server?
- If you have a colormapped X server, the number of unique colors in
an image must first be reduced to match the requirements of your
server before it can be displayed. Display tries to make the
color reduced image closely resemble the original. However, there
are some options that may improve the appearance.
You can use a private colormap. By default, your image must share
colors with existing applications on your X server. The colors in
your image may be very different than the shared colors and the
results may be visually unsatisfactory. Try
display -colormap private image.miff
The disadvantage is the annoying colormap loading and unloading as
you move your pointer in and out of the image window.
The YCbCr colorspace may give better results when color reducing
images of people faces. Try
display -colorspace YCbCr image.miff
If you intend to view an image frequently, reduce the number of
colors to match the resolution of your X server once and write to a
new image. Then display this new image. For example,
convert -colors 256 -dither image.jpeg image.miff
display image.miff
This forces the time-consuming process of color reducing the image
to one-time, rather than each time the image is displayed.
- 3. How do I set the transparency index in a GIF image
so it displays properly within Mosaic?
- Display your GIF image with display. Choose
Matte from the Image Edit command menu and identify a pixel
that has the transparency color. Press Method and select a
matte edit method from a pop-up menu. Choose from these methods:
point
replace
floodfill
The point method changes the matte value of any pixel selected with
the pointer until the button is is released. The replace method
changes the matte value of any pixel that matches the color of the
pixel you select with a button press. Floodfill changes the matte
value of any pixel that matches the color of the pixel you select
with a button press and is a neighbor.
Select your transparent pixel with the pointer and press a button.
The image is redisplayed with any transparent pixels recolored to
the background color. You can select other pixels or areas to
force to transparent. When you are satisfied, press Return.
Finally, choose Save from the command menu and write your GIF
image to a file. Note that setting transparency works best on a
TrueColor or DirectColor visual. If your server only exports
colormapped visuals you will need to use a Standard Colormap to set
transparency.
xstdcmap -best
display -map list image.gif
choose Matte Edit
select your transparent pixel then press Return
choose Save
If you do not have the xstdcmap(1) program, try
display -visual TrueColor image.gif
- 4. How can I stop the filenames from changing in the title bar of the animate(1) image window?
- Animate
updates the image file name in the title bar of the
image window as each image is displayed from the image sequence.
To display just a single name that will not change, use -title:
animate -title "My Image Sequence" images.
- 5. The image grabbed by import(1) does not look like
the image on my X server. What's wrong?
- Use the -descend option:
import -descend image.miff
or set this X resource:
import.descend: True
By default, import quickly grabs
the image from the X server. However,
it may not always have the correct colors
in some areas. This can happen when a subwindow has a
different colormap than its parent. With -descend,
import
descends the window hierarchy. Descending involves
grabbing the image and colormap of each window or subwindow
associated with the window you select and compositing it on
a blank canvas. This can be significantly slower than just
grabbing the top-level window but ensures the correct image.
- 6. How do I animate a digital YUV image sequence?
- Suppose your sequence is 72 352x240 frames titled frame0.Y,
frame0.U, frame0.V, frame1.Y, frame1.U, etc. Use this command:
animate -geometry 352x240 -scene 0-71 yuv3:frame%d
- 7. How do I view only the red channel of an RGB
image?
- Use the -gamma option, for example,
display -gamma 1.0,0.0,0.0 image.miff
- 8. How do I change the default PostScript page size?
- The default dimensions of a PostScript page is 612x792. If you
prefer another default, change the page geometries in magick/image.h
and recompile.
- 9. When I display or convert an image, I get
Memory allocation error. What can I do?
- The simplest thing to do is to increase your real memory or
virtual memory by expanding your swap partition. For ImageMagick to
work effectively, you should have at least 24mb of real memory and
48mb of virtual on your computer. And keep in mind processor speed as
well. An image operation that takes 5 seconds on my 200mhz Sun Ultra
may take 2 minutes on a 486pc.
ImageMagick is designed to be general purpose. It can display many
image storage formats (Monochrome, PseudoColor, or
TrueColor) on many different types of X visuals (StaticGray,
StaticColor, PseudoColor, GrayScale, DirectColor, or TrueColor).
To support all these combinations of image storage formats and X visuals, extra
memory is required. In fact, each image requires up to 6 bytes per pixel
to store in memory. Additionally, animate and montage store an entire image
sequence in memory. ImageMagick does reduce memory requirements
by compressing pixel information with run-length encoding. However, this
is only effective for images with large runs of like pixels such as Postscript
or computer generated images. As an example, a 1728x2500 fax image may
require only 0.5mb of memory. In contrast a JPEG image this size could
require 20mb of memory.
For animation, consider using the MPEG programs from Berkeley if
you encounter memory limitations with animate.
It only stores a few frames at a time in memory. Convert has an option to create the
proper CCIR 601 2:1:1 files as input to the MPEG program. However, the
CCIR 601 2:1:1 image format is lossy. Computer generated images may not
look very good.
- 10. How do I concatenate three images left-to-right with no
borders, frames, or text?
- Assume your three images are called image1.ppm,
image2.ppm, and image3.ppm. Type
montage -mode concatenate -tile 3x1 image1.ppm image2.ppm \
image3.ppm concatenated.miff
To concatenate the images top-to-bottom, use -tile 1x3.
For more control over the placement of an image, use
combine. First create a matte image and position
your images onto the matte. For example,
convert -size 350x500 xc:black composite.miff
combine -geometry +0+0 composite.miff image1.gif composite.miff
combine -geometry +100+0 composite.miff image2.gif composite.miff
combine -geometry +0+300 composite.miff image3.gif composite.miff
combine -geometry +0+375 composite.miff image4.gif composite.miff
- 11. How do I create a GIF animation sequence to display
within Netscape?
- Use convert with the -delay and
-page options. The -delay option is used to specify the
delay in 1/100ths of a second between the display of each frame
of the animation. For example,
convert -delay 20 frame*.gif animation.gif
You can also declare specific delays for each frame of the image
sequence. For example, if the delay was 20, 10, and 5, use
convert -delay 20 frame1.gif -delay 10 frame2.gif \
-delay 5 frame3.gif animation.gif
Use -page to specify the left and top locations of
the image frame:
convert frame1.gif -page +50+100 frame2.gif -page +0+100 \
frame3.gif animation.gif
Finally, if you want the image to loop within Netscape, use
-loop:
convert -loop 50 frame*.gif animation.gif
For further information about GIF animation, see
GIF Animation
on the WWW.
Note, that all the images are combined into a single multi-image GIF
animation. If you want a single image produced for each frame, use
+adjoin:
convert +adjoin images.* frames%d.gif
- 12. When I display a PostScript image it
appears to be trimmed. I would like to display the entire page, including
any white space.
- ImageMagick automatically trims any PostScript image as
defined by the bounding box. To preempt this behavior, remove the bounding
box statement from the Postscrpt or explicitly set the
page size. For example,
display -page letter image.ps
- 13. What are visual image directories? How do I use
them?
- A visual image directory (VID) is an image that contains thumbnails
of one or more images in a file directory. Rather than displaying
each individual image at its full resolution, you can browse the
visual image directory and choose an image to display. You can
create a VID with either of these commands:
montage *.jpg directory.vid
convert 'vid:*.jpg' directory.vid
Of course you can substitute any filenames you desire. Montage has many relevant command
line options. You can exercise more control over the appearance of the VID
than with convert.
Next display the directory:
display directory.vid
Finally browse and select an image to display. Move the pointer to
the image and press button 3.
You can create the VID directory with this command:
display 'vid:*.jpg'
You can also select Visual Image... from the File menu of the
command widget.
Note, that creating a VID is time consuming. Creating them
on-the-fly within display may be
less convenient than using montage or convert . Also, if you create them
with montage. or convert, you can reuse them as often
as necessary.
Note that a visual image directory is useful for looking at
individual frames of an image sequence:
display vid:movie.mpg
- 14. I have an HP. How do I take advantage of the
Color Recovery option?
- Type
display -map list image.miff
If you want to use Color Recovery all the time, put this in your X
defaults file:
display.map: list
Now if you need to turn off Color Recovery temporarily, type
display +dither image.miff
- 15. I use the window ID reported by xwininfo(1) with
import and it does include the window manager frame as expected. How can I
save the window with its frame?
- By default, xwininfo(1) returns the ID of the window you click on.
Use the -frame option to get the reparented window ID:
xwininfo -frame
You can then use the returned window ID with import:
import -frame -window ID window.miff
- 16. I displayed an image and it appears as one solid
color. What did I do wrong?
- A blank image generally means that the image is either corrupt or
it has a matte channel and the matte values are all zero.
ImageMagick treats a matte value of zero as completely
transparent. To determine if this is the problem, try
display +matte image.miff
- 17. I received the following message, "???? library is
not available ...". What does it mean?
- ImageMagick requires source libraries not included with the
distribution to view or convert certain image formats such as JPEG
or TIFF. The above message means you did not compile the required
library and link with the ImageMagick utilities. See
README
for the location of these libraries and
compiling instructions. Also edit Magick.tmpl
if you use xmkmf or Makefile.in if you use
configure and uncomment the appropriate plug-in defines as
instructed. Finally, type
cd ImageMagick
rm display
rm magick/decode.o magick/encode.o
make
Make sure the compile command line includes the appropriate define. For
example, with JPEG the compile line should have -DHasJPEG. The
link line should include the library path and name. For JPEG, this
might be -Ljpeg -ljpeg. Also, make sure the clients link to the
new ImageMagick library. In particular, with shared libraries the compile
may link to a system version of libMagick.so. In this case,
type:
cd magick
make install
cd ..
make install
- 18. I want to inspect the values of the matte channel within my image. How can I do that?
- View the matte image as a gray scale image. Suppose you have a
TIFF image that has a matte channel and is 640 pixels in width and
480 in height. Type:
convert image.tiff image.matte
display -size 640x480 gray:image.matte
- LZW compression is no longer available in the ImageMagick
distribution (GIF pixel data is saved uncompressed). I am in
agreement with
L. Peter Deutsch's arguments
regarding LZW within Ghostscript:
- Unisys claims that they have the right to demand licenses
and/or fees from free software incorporating the LZW algorithms,
even though they are currently not doing this. This will hang
over the head of the developer of any free software that creates
GIF files until the Welch patent expires on December 10, 2002
(17 years after its award date).
- I wish to support the industry move from GIF to PNG. The next
Aladdin Ghostscript release (and possibly the next GNU
Ghostscript release as well) will include PNG drivers;
experimental PNG drivers for Ghostscript are already available.
More generally, I wish to support any industry move away from
reliance on patented software, which my studies have led me to
consider a bad deal for everyone except a few lawyers and a few
very large companies.
- While Unisys' press release says they will not seek licenses or
fees from "non-commercial, non-profit" distributors, it is not
at all clear to me that they would also exempt people like
Walnut Creek CD-ROM, FSF, or Yggdrasil, who distribute free
software but charge for the media and documentation. FSF and
Yggdrasil, at least, would not redistribute GIF code under those
circumstances. This would have a very bad effect on the
availability of Ghostscript. I also believe, given that
CompuServe gave in to Unisys' demands, that Unisys might demand
licenses and fees from any commercial ISP (Netcom, AOL, ...)
that distributed free software containing LZW code.
- Unisys' conditions are not compatible with
the GNU License, since they restrict recipients' rights.
Previously, there was a separate LZW distribution. However, you can now
enable LZW for GIF, Postscript Level II, and the Portable Document Format
within ImageMagick by defining -DHasLZW. See Magick.tmpl
or Makefile.in.
- 20. How can I add one of those cool bevels to my image
that I see used on the Web?
There are four types of ornamental borders you can add to your image with
ImageMagick. Each is listed below with the procedure to use them with
your image.
- Surround the image with a border of color: Use -border
followed by the width and height of the border. Set the color of the border
with -bordercolor. For example, to surround your image with a red
border that is 25 pixels wide on each side, use:
convert -bordercolor red -border 25x25 image.jpg image.gif
- Lighten or darken image edges to create a 3-D effect: Use
-raise followed by the width of the image edge. For example, to
create a raised edge effect of 25 pixels, use:
convert -raise 25 image.jpg image.gif
- Surround the image with an ornamental frame: Use -frame
followed by the width and height of the frame. Set the color of the border
with -mattecolor. For example, to surround your image with a gray
frame that is 25 pixels wide on each side, use:
convert -mattecolor gray -frame 25x25 image.jpg image.gif
- Surround the image with a raised or sunken bevel: Use
-frame followed by the width and height of the bevel. Set the color
of the border with -mattecolor. This is just like the description
above except you specify a bevel width that matches the frame width.
For example, to surround your image with a gray bevel that is 25 pixels wide
on each side, use:
convert -mattecolor gray -frame 25x25+0+25 image.jpg image.gif
convert -mattecolor gray -frame 25x25+25+0 image.jpg image.gif
- 21. I try to launch display from my window manager and
it fails. What's up?
- Display determines if it is executing
interactively and behaves differently depending on the result. To convince
display you are running in an interactive environment
when launching from a window manager, use either of
display logo:Untitled
display < /dev/console
- 22. When I convert Postscript to another format, how can I
improve the appearance of the text?
- Simple. Increase the dots-per-inch when converting and sub-sample:
convert -density 288 -geometry 25% image.ps image.gif
Change the density to 144 and geometry to 50% if the above command fails
due to insufficient memory. Alternatively, see the Ghostscript documentation
about using high-quality fonts.
The -density option increases the number of pixels (or dots)
generated by Ghostscript when processing the input postscript file.
However as all other images formats are generally displayed on screens
which are typically about 72 to 100 dots per inch, the output image will
be larger.
The -geometry option reduces the large image output of ghostscript
image back to a normal 72 dpi resolution (25% of 288 dpi gives 72 dpi)
but in the process anti-aliases (or smooths) the fonts and lines of the
image so as to remove the jaggies you would otherwise get from a
normal postscript to image conversion.
- 23. How can I annotate an image with text that is 2 to 3
inches tall?
- If you do not access to a particular named font that is large, try scalable
fonts. First see if you have any scalable fonts. Type
xlsfonts -fn '*-0-0-0-0-*'
- Or if you are using display, use the font pattern
above within the Font Browser (see Image Edit->Annotate). Next substitute the
appropriate resolution. Keep in mind that a scalable font must be fully
qualified to work. That is, all 14 fields must be specified. Here is one
example where we annotate an image with large Helvetica text:
convert -font '-*-helvetica-*-*-*--300-300-*-*-*-*-iso8859-1' \
-pen green -draw 'text 50,300 Magick' image.png annotated.png
- 24. How can I convert my GIF animation sequence to
individual image files?
- Use the scene embedded file format with convert:
convert animation.gif frame%02d.gif
- The resulting image files are titled frame01.gif,
frame02.gif, frame03.gif, etc.
- 25. How can I remove the background that prints around my
image when I display it with Netscape?
- Use the +page option of the convert
command:
convert +page alpha.gif beta.gif
- GIF allows for a page offset relative to some background. The page offset
information may have been in your GIF image already or it could have been
introduced by ImageMagick. Either way, +page removes the
unwanted page offset and Netscape should behave as expected.
- 26. How do I create a GIF image with Web safe colors?
- Use the -map option of the convert
command:
convert -map netscape: alpha.gif beta.gif
- Netscape predefines 216 colors for colormapped workstations. Use the
above command to ensure only these predefined colors are used. Otherwise
Netscape dithers your image with varying degrees of image fidelity.
- 27. How come Adobe Acrobat 2.1 can't read ImageMagick's
PDF format?
- The default PDF compression is Zip. You need Acrobat
3.0 and above to read Zip compressed PDF. Instead use no compression or
LZW compression when you create the PDF file:
convert +compress images.tiff image.pdf
- 28. How can I add a matte layer to my image?
- One way is to use a bitmap as your transparency mask. Try
combine -compose ReplaceMatte image.gif mask.xbm transparent.gif
- Note, GIF is limited to one transparent color. If your mask has variable
opacity, use a format like MIFF, TIFF, or PNG as you output image format.