ImageMagick
ImageMagick® är ett programpaket för att skapa, redigera och komponera bitmappsbilder. Den kan läsa, konvertera och skriva bilder i olika format (över 100) inklusive DPX , EXR , GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, och TIFF. Använd ImageMagick för att översätta, vända och spegel, rotera, skala, luta och omvandla bilder, justera bildens färger, använda olika specialeffekter, eller rita text, linjer, polygoner, ellipser och Bezier kurvor.
ImageMagick är gratis programvara som levereras som en färdig att köra binär distribution eller som källkod som du fritt kan använda, kopiera, ändra och distribuera i både öppna och proprietära program. Det distribueras under Apache 2.0 licensen, som godkänts av OSI och rekommenderas för användning av OSSCC.
http://www.imagemagick.org/
ImageMagick är ett mycket användbart program när man ska batch-köra stora mängder bilder. Jag har själv använt den i många jobb som jag har gjort. Personligen tycker jag dock att programmet tar mycket CPU kraft och att den inte är helt lämplig i publika server sammanhang. Det finns då andra och snabbare program som jag kanske kommer att skriva om vid ett senare tillfälle.
Installera
Windows
För windows-datorer rekommenderar jag att installera ett färdigkompilerat program som du hittar här:
http://www.imagemagick.org/script/binary-releases.php#windows
Tidigare har jag haft stora problem att få Perl::Magick att fungera på Windows NT servrar. Jag vet inte om detta varit en bugg i ActivePerls ppm och om detta är ändrat eller fixat nu. Här var lösningen för mig då, runt 2000 när jag hade ett jobb som berörde detta:
- Image-Magick.ppd filen och den korresponderande x86-mappen måste ha sökvägen "C:\", inte "C:\TEMP" eller något annat. (PPM programmet kommer att leta efter "\.\x86\Image-Magick.tar.gz" som på grund av den föregående backslashen inte är relativt det aktiva "directory" som programmet körs ifrån.)
- CORE*.dll filer måste alla vara placerade i "C\perl\bin", annars kommer programmet inte att fungera. Alla IM*.dll filer måste vara placerade i "C:\imagemagick" mappen, oberoende av det eventuella värdet %MAGICK_HOME%. Dock verkade det spela mindre roll vart X*.dll filerna var placerade.
Som du kanske märker verkar detta vara en bugg och slarvigt skrivna installations script som förhoppningsvis är fixade vid det här laget.
Ubuntu och Debian
(Lättare än så här kan det inte bli)
sudo apt-get install imagemagick
Mac OS X
Ladda hem en förkompilerad version och packa upp
http://www.imagemagick.org/download/binaries/
cd Downloads/ImageMagick-6.5.5/
sudo cp bin/* /usr/local/bin/
sudo cp -fr include/* /usr/local/include/
sudo cp -fr include/* /usr/local/include/
sudo cp -fr lib/ImageMagick* /usr/local/lib/
sudo cp -fr lib/lib* /usr/local/lib/
sudo cp -fr lib/pkgconfig/* /usr/local/lib/pkgconfig/
sudo cp -fr share/doc/ImageMagick* /usr/local/share/doc/
sudo cp -fr share/man/man1/* /usr/local/share/man/man1/
Eller som shell-script
#!/bin/sh
echo "Installerar filer"
sudo cp bin/* /usr/local/bin/
sudo cp -fr include/* /usr/local/include/
sudo cp -fr lib/ImageMagick* /usr/local/lib/
sudo cp -fr lib/lib* /usr/local/lib/
sudo cp -fr lib/pkgconfig/* /usr/local/lib/pkgconfig/
sudo mkdir /usr/local/share/doc
sudo cp -fr share/doc/ImageMagick* /usr/local/share/doc/
sudo cp -fr share/ImageMagick* /usr/local/share/
sudo mkdir -p /usr/local/share/man/man1
sudo cp -fr share/man/man1/* /usr/local/share/man/man1/
### Detta funkar nog inte utan måste köras rad för rad i terminalen
#echo "Fixar sökvägar"
#export MAGICK_HOME="/usr/local"
#export PATH="/usr/local/bin:$PATH"
#export DYLD_LIBRARY_PATH="$MAGICK_HOME/lib"
Koppla ihop så att det funkar, skriv i terminalen
export MAGICK_HOME="/usr/local"
export PATH="/usr/local/bin:$PATH"
export DYLD_LIBRARY_PATH="$MAGICK_HOME/lib"
Av-installera
#/bin/sh
sudo rm /usr/local/bin/animate
sudo rm /usr/local/bin/Wand-config
sudo rm /usr/local/bin/compare
sudo rm /usr/local/bin/composite
sudo rm /usr/local/bin/conjure
sudo rm /usr/local/bin/convert
sudo rm /usr/local/bin/display
sudo rm /usr/local/bin/identify
sudo rm /usr/local/bin/import
sudo rm /usr/local/bin/Magick-config
sudo rm /usr/local/bin/Magick++-config
sudo rm /usr/local/bin/MagickCore-config
sudo rm /usr/local/bin/MagickWand-config
sudo rm /usr/local/bin/mogrify
sudo rm /usr/local/bin/montage
sudo rm /usr/local/bin/stream
sudo rm -fr /usr/local/include/ImageMagick
sudo rm -fr /usr/local/lib/ImageMagick-*
sudo rm -fr /usr/local/lib/libMagick++*
sudo rm -fr /usr/local/lib/libMagickCore.*
sudo rm -fr /usr/local/lib/libMagickWand.*
sudo rm -fr /usr/local/lib/pkgconfig/ImageMagick*
sudo rm -fr /usr/local/lib/pkgconfig/Magick*
sudo rm -fr /usr/local/lib/pkgconfig/Wand.*
sudo rm -fr /usr/local/share/doc/ImageMagick-*
sudo rm -fr /usr/local/share/ImageMagick-*
sudo rm -fr /usr/local/share/man/man1/animate.1
sudo rm -fr /usr/local/share/man/man1/Wand-config.1
sudo rm -fr /usr/local/share/man/man1/compare.1
sudo rm -fr /usr/local/share/man/man1/composite.1
sudo rm -fr /usr/local/share/man/man1/conjure.1
sudo rm -fr /usr/local/share/man/man1/convert.1
sudo rm -fr /usr/local/share/man/man1/display.1
sudo rm -fr /usr/local/share/man/man1/identify.1
sudo rm -fr /usr/local/share/man/man1/ImageMagick.1
sudo rm -fr /usr/local/share/man/man1/import.1
sudo rm -fr /usr/local/share/man/man1/Magick-config.1
sudo rm -fr /usr/local/share/man/man1/Magick++-config.1
sudo rm -fr /usr/local/share/man/man1/MagickCore-config.1
sudo rm -fr /usr/local/share/man/man1/MagickWand-config.1
sudo rm -fr /usr/local/share/man/man1/mogrify.1
sudo rm -fr /usr/local/share/man/man1/montage.1
sudo rm -fr /usr/local/share/man/man1/stream.1
Kompilera själv
Ladda hem (notera att det idag säkert finns nyare versioner än ImageMagick-6.3.1-2):
wget ftp://ftp.sunet.se/pub/multimedia/graphics/ImageMagick/ImageMagick-6.3.1-2.tar.gz
Packa upp:
tar xvzphf ImageMagick-6.3.1-2.tar.gz
cd ImageMagick-6.3.1/
./configure
eller
./configure --with-modules=yes
------------------------------------------------------------------------
ImageMagick is configured as follows. Please verify that this configuration
matches your expectations.
Host system type : i686-pc-linux-gnu
Option Value
-------------------------------------------------------------------------
Shared libraries --enable-shared=yes yes
Static libraries --enable-static=yes yes
Module support --with-modules=yes yes
GNU ld --with-gnu-ld=yes yes
Quantum depth --with-quantum-depth=16 16
Delegate Configuration:
BZLIB --with-bzlib=yes yes
DPS --with-dps=yes no
FlashPIX --with-fpx=no no
FreeType 2.0 --with-ttf=yes yes
GhostPCL None pcl6 (unknown)
Ghostscript None gs (8.15.3)
Ghostscript fonts --with-gs-font-dir=default /usr/share/ghostscript/fonts/
Ghostscript lib --with-gslib=no no
Graphviz --with-gvc=yes no
JBIG --with-jbig=yes no
JPEG v1 --with-jpeg=yes yes
JPEG-2000 --with-jp2=yes yes
LCMS --with-lcms=yes no
Magick++ --with-magick-plus-plus=yes yes
PERL --with-perl=yes /usr/bin/perl
PNG --with-png=yes yes
TIFF --with-tiff=yes yes
Windows fonts --with-windows-font-dir= none
WMF --with-wmf=yes no
X11 --with-x= yes
XML --with-xml=yes yes
ZLIB --with-zlib=yes yes
X11 Configuration:
X_CFLAGS = -I/usr/X11R6/include
X_PRE_LIBS = -lSM -lICE
X_LIBS = -L/usr/X11R6/lib
X_EXTRA_LIBS =
Options used to compile and link:
PREFIX = /usr/local
EXEC-PREFIX = /usr/local
VERSION = 6.2.6
CC = gcc
CFLAGS = -g -O2 -Wall -pthread
CPPFLAGS = -I/usr/local/include
PCFLAGS =
DEFS = -DHAVE_CONFIG_H
LDFLAGS = -L/usr/local/lib -L/usr/X11R6/lib -lfreetype -lz -L/usr/lib
LIBS = -lMagick -ltiff -lfreetype -ljpeg -lXext -lSM -lICE -lX11 -lXt -lbz2 -lz -lpthread -lm -lpthread
CXX = g++
CXXFLAGS = -pthread
Ha koll på vad det är som fattas på slutet. Försök att installera så mycket som möjligt med YaST (om SuSE) eller apt-get (om Ubuntu eller Debian).
make
make check
om allt är OK
make install
Ev problem med:
"... error while loading shared libraries ..."
Se till att: "/usr/local/lib" finns med i "/etc/ld.so.conf".
Kör kommandot:
/sbin/ldconfig
Några användbara exempel från komandoraden
Konvertera alla *-jpg bilder i en mapp till 25% mindre bilder med prefixet thumb-*
for img in *.jpg
do
convert -sample 25%x25% $img thumb-$img
done
Konverterar alla tif bilder till en översiktskarta
convert 'vid:*.tif' dir.pnKonverterar *.tif till animation
convert -delay 20 *.tif dna.gifeller
convert -delay 20 *.tif dna.png(ger nummrerade pngs dna.png.1 dna.png.1 osv)
Skriv text på bilden:
convert -font helvetica -draw "text 100,100 Cockatoo" dir.png dir.annotate.png
Filter:
convert -swirl 180 dna.png.1 swirl.png
convert -implode 99 dna.png.1 implode_pos99.png
convert -implode -99 dna.png.1 implode_neg99.png
convert -implode 50 dna.png.1 implode_pos50.png
convert -implode -50 dna.png.1 implode_neg50.png
convert -implode 10 dna.png.1 implode_pos10.png
convert -implode -10 dna.png.1 implode_neg10.png
convert -charcoal 10 dna.png.1 charcoal_f10.png
convert -paint 10 dna.png.1 paint_f10.png
convert -wave 10x200 dna.png.1 wave_f100.pnghttp://www.linbox.com/ucome.rvt/any/doc_distrib/ImageMagick-5.1.1/www/montage.html
Skapa ett motage av alla tif bilder som är mest 256 px bred och 192 px på höjden,
omgiven av en röd rand, och separerade med 10 px:
montage -geometry 256x192"+1"0"+1"0 -bordercolor red *.tif montage.pngmer på:
http://www.cit.gu.edu.au/~anthony/graphics/imagick6/
Photo CD
2048x3072
convert IMG0001.PCD[5] test1.jpg
1024x1536
convert IMG0001.PCD[4] test1.jpg
512x768
convert IMG0001.PCD[3] test1.jpg
256x384
convert IMG0001.PCD[2] test1.jpg
128x192
convert IMG0001.PCD[1] test1.jpg
64x96 (?)
convert IMG0001.PCD[0] test1.jpg
Skärpefilter
-unsharp <radius>{x<sigma>}{+<amount>}{+<threshold>}
A general rule of thumb for choosing sigma might be:
if radius < 1, then sigma = radius
else sigma = sqrt(radius)
Photoshop ImageMagick
radius: 1.5 radius: 1.5
sigma:ingen sigma: sqrt(1.5) = 1.2247
amount: 100% amount: 1.0
thesh.: 5 thesh.: 0.02 (0.02 * 255)
convert -unsharp 1.5x1.0+1.0+0.02 IMG0012.PCD[5] test_us3.png-unsharp 1.5x1.34+1.2247+0.02 (ganska grusig)
-unsharp 1.5x1.0+1.2247+0.02 (inte så mycket effekt, dock inte grusig)
-unsharp 1.5x1.0+1.2247+0.0039 (skarp men brusig)
Perl modulen Image::Magick
En enkel resize med ett uppskärpnings filter
#!/usr/bin/perl
use Image::Magick;
$bild = "bild.jpg";
$geo = '512x512';
$image = Image::Magick->new;
$x = $image->Read($bild);
# För skärpa:
$x = $image->Resize( geometry=> ${geo}, blur => '<1' );
# Enkel:
$x = $image->Resize( geometry=> ${geo} );
$x = $image->Write('heap_bild_sharp.jpg');
undef $image;
}
Ping(), för att plocka ut bredd, höjd, storlek och format
use Image::Magick;
$image = Image::Magick->new;
($width, $height, $size, $format) = $image->Ping($filename);# Syntax:
geometry=>geometry,
width=>integer, height=>integer, filter=>{Point, Box,
Triangle, Hermite, Hanning, Hamming, Blackman, Gaussian, Quadratic,
Cubic, Catrom, Mitchell, Lanczos, Bessel, Sinc}, blur=>doubleEtt perl-script som demonstrerar olika filter
http://www.dylanbeattie.net/magick/filters/result.html
#!/bin/perl
print << "ENDBLOCK";
<html>
<head>
<title>ImageMagick Filters</title>
<link href="styles.css" rel="stylesheet" type="text/css">
</head>
<body>
<h1>ImageMagick Resize Filters</h1>
<p>This
page demonstrates the results of resampling three images using the
various resize filters and blur settings available in ImageMagick, and
the file size of the resulting thumbnail images. Click the image
filename at the top of each section to see the fullsize image.</p>
<p>Results
produced using PerlMagick 5.4.0 under Windows 2000, using this <a
href="filters.pl">Perlmagick script</a></p>
<p><a href="http://www.dylanbeattie.net/magick/">Home</a></p>
<hr>
<h1>The Results</h1>
ENDBLOCK
use Image::Magick;
print "<table cellpadding=\"5\" border=\"1\">";
print "<tr><td>Filter:</td>";
my $colcount = 1;
for (my $blur = 0.125; $blur <= 4; $blur *= 2) {
print "<td>Blur $blur</td>";
$colcount++;
}
my $filesize;
my $quality = 85;
foreach $imagefile (glob("*.jpg *.gif")) {
print("<tr><td colspan=\"$colcount\"><a
href=\"$imagefile\">$imagefile</a> (Click for original
image)</td></tr>");
foreach $filter (Point, Box,
Triangle, Hermite, Hanning, Hamming, Blackman, Gaussian, Quadratic,
Cubic, Catrom, Mitchell, Lanczos, Bessel, Sinc) {
print "<tr><td>$filter</td>";
for (my $blur = 0.125; $blur <=4; $blur *= 2) {
warn("Writing filtered/$filter\_$blur\_$imagefile\n");
my $image = new Image::Magick;
$image->Read($imagefile);
$image->Resize(geometry=>'128x128', filter=>"$filter", blur=>$blur);
$image->Set(quality=>$quality);
$image->Write("jpg:filtered/$filter\_$blur\_$imagefile");
$filesize = ((stat("filtered/$filter\_$blur\_$imagefile"))[7])/1024;
$filesize = int($filesize*100)/100;
print "<td bgcolor=\"#cccccc\"><img
src=\"filtered/$filter\_$blur\_$imagefile\"><br>$filesize
Kb</td>";
undef $image;
}
print "</tr>";
}
}
Relaterade dokument
SVG Grafik
JPEG Tools
Exif-Data
Sammanställd och författad av Hans E Andersson 2005
"ImageMagick", Hans E Andersson: 2005-10-18 18:03:49, ändrad: 2011-04-22 00:13:22