IM can be compiled with Cygwin tools.
The ImageMagick developers helpfully provide pre-built IM binaries that work fine under Windows. Why would you want to compile it yourself?
This page is based on a download of ImageMagick on 30 July 2014, v6.8.9-6, with Cygwin bash, on a 64-bit Windows 8.1 computer.
Relevant official IM documentation is:
I suggest you follow the instructions on my IM with Cygwin page. I installed the complete binary Cygwin "Devel" (development) package, to ensure I had make, the compiler and linker and so on. Probably not all components are required.
You can download ImageMagick source from the Cygwin distribution, but I strongly suggest that you don't. The Cygwin distro of IM is typically years behind the official IM distro.
Ensure the directories for the Cygwin binaries are on the system Path.
On this page, I prefix bash commands with a dollar, "$". This is the usual bash prompt. Don't type it.
The official IM page Install ImageMagick from Source has two sets of source code that can be compiled under the Cygwin toolset under Windows. These are: "Unix Source", and "Windows Source".
This page describes how to build both versions. You only need one, of course. Which one is better? They seem to be functionally equivalent, with the same versions of the various libraries. Both versions include the libraries.
Commands to download and unpack are specific to the version. Commands to configure, make, and make install are common to both.
Downloading and building takes about 20 minutes. The "Windows Source" is slightly slower as it includes the source of common delegates.
By default, IM will install to the directory /usr/local/lib. However, I don't have permission to write to that directory:
$ echo Hello >/usr/local/lib/x.txt
bash: /usr/local/lib/x.txt: Permission denied
IM's build process won't discover this until after the configure and make, so if the install fails, we will need to repeat the configure and make.
The instructions on Install ImageMagick from Source say we should use sudo, but Cygwin doesn't have sudo. (This is weird. Perhaps it has some equivalent program? I don't know.)
Perhaps I could install as an Administrator, but I prefer not to.
Instead, I create a new directory that I will use for the installation. (Perhaps --disable-installed would be better.)
$ mkdir ~/iminst
Different versions of IM can be installed to different directories.
I download the source to my Cygwin home directory.
bash $ cd ~ $ wget http://www.imagemagick.org/download/ImageMagick.tar.gz
This has downloaded the file ImageMagick.tar.gz, which is about 12 MB.
$ tar xvzf ImageMagick.tar.gz
This unpacks the distribution into directory ~/ImageMagick-6.8.9-6 and subdirectories.
$ cd ImageMagick-6.8.9-6 $ ./configure --prefix=/home/Alan/iminst --with-quantum-depth=32 --enable-hdri --with-jp2=yes --with-rsvg=yes --with-windows-font-dir=/cygdrive/c/Windows/Fonts
(The ./configure command is a bit messy, so I generally have a file named imconf.sh as required in each build directory.)
I tell configure the directory where the installation is to go. I choose Q32 because I've never used Q32, and I want to try it. I want HDRI. I tell it where Windows font files are kept.
Configure takes a couple of minutes. At the end, it spits out this:
ImageMagick is configured as follows. Please verify that this configuration matches your expectations. Host system type: x86_64-unknown-cygwin Build system type: x86_64-unknown-cygwin Option Value ------------------------------------------------------------------------------- Shared libraries --enable-shared=yes yes Static libraries --enable-static=yes yes Module support --with-modules=no no GNU ld --with-gnu-ld=yes yes Quantum depth --with-quantum-depth=32 32 High Dynamic Range Imagery --enable-hdri=yes yes Install documentation: yes Delegate Configuration: BZLIB --with-bzlib=yes yes Autotrace --with-autotrace=no no Dejavu fonts --with-dejavu-font-dir=default none DJVU --with-djvu=yes no DPS --with-dps=yes no FFTW --with-fftw=yes no FlashPIX --with-fpx=yes yes FontConfig --with-fontconfig=yes yes FreeType --with-freetype=yes yes GhostPCL None pcl6 (unknown) GhostXPS None gxps (unknown) Ghostscript None gs (9.06) Ghostscript fonts --with-gs-font-dir=default /usr/share/ghostscript/fonts/ Ghostscript lib --with-gslib=no no Graphviz --with-gvc=no JBIG --with-jbig=yes yes JPEG v1 --with-jpeg=yes yes JPEG-2000 --with-jp2= LCMS v1 --with-lcms=no no LCMS v2 --with-lcms2=yes yes LQR --with-lqr=yes no LTDL --with-ltdl=yes no LZMA --with-lzma=yes yes Magick++ --with-magick-plus-plus=yes yes OpenEXR --with-openexr=yes no OpenJP2 --with-openjp2=yes no PANGO --with-pango=yes no PERL --with-perl=no no PNG --with-png=yes yes RSVG --with-rsvg=no no TIFF --with-tiff=yes yes WEBP --with-webp=yes no Windows fonts --with-windows-font-dir= none WMF --with-wmf=no no X11 --with-x= yes XML --with-xml=yes no ZLIB --with-zlib=yes yes X11 Configuration: X_CFLAGS = X_PRE_LIBS = -lSM -lICE X_LIBS = X_EXTRA_LIBS = Options used to compile and link: PREFIX = /home/Alan/iminst EXEC-PREFIX = /home/Alan/iminst VERSION = 6.8.9 CC = gcc -std=gnu99 -std=gnu99 CFLAGS = -I/usr/include/freetype2 -I/usr/include/libpng15 -fopenmp -g -O2 -Wall -march=core2 -fexceptions -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=32 CPPFLAGS = -I/usr/include/freetype2 -I/usr/include/libpng15 -I/usr/include/freetype2 -I/usr/include/libpng15 -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=32 PCFLAGS = DEFS = -DHAVE_CONFIG_H LDFLAGS = LIBS = CXX = g++ CXXFLAGS = -g -O2 FEATURES = DPC HDRI OpenMP DELEGATES = bzlib mpeg fpx fontconfig freetype jbig jng jpeg lcms lzma png ps tiff x zlib
It seems that the formats I care most about (jpeg, png, tiff, ps) should work.
$ make
Make raised many warnings, which I ignore. It finishes with:
CC utilities/animate.o CCLD utilities/animate.exe CC utilities/compare.o CCLD utilities/compare.exe CC utilities/composite.o CCLD utilities/composite.exe CC utilities/conjure.o CCLD utilities/conjure.exe CC utilities/convert.o CCLD utilities/convert.exe CC utilities/display.o CCLD utilities/display.exe CC utilities/identify.o CCLD utilities/identify.exe CC utilities/import.o CCLD utilities/import.exe CC utilities/mogrify.o CCLD utilities/mogrify.exe CC utilities/montage.o CCLD utilities/montage.exe CC utilities/stream.o CCLD utilities/stream.exe cp -f magick/ImageMagick.pc magick/ImageMagick-6.Q32HDRI.pc cp -f magick/MagickCore.pc magick/MagickCore-6.Q32HDRI.pc cp -f wand/MagickWand.pc wand/MagickWand-6.Q32HDRI.pc cp -f wand/Wand.pc wand/Wand-6.Q32HDRI.pc cp -f Magick++/lib/Magick++.pc Magick++/lib/Magick++-6.Q32HDRI.pc cp -f Magick++/lib/ImageMagick++.pc Magick++/lib/ImageMagick++-6.Q32HDRI.pc make[1]: Leaving directory '/home/Alan/ImageMagick-6.8.9-6'
It has created binaries in subdirectory utilities. I can verify them:
$ utilities/convert.exe logo: l.png
This creates l.png, the familiar logo.
However, that program can't see IM's xml files. It needs to be installed properly.
$ make install
The last few lines are:
/usr/bin/mkdir -p '/home/Alan/iminst/lib/pkgconfig' /usr/bin/install -c -m 644 magick/ImageMagick.pc magick/MagickCore.pc magick/Im ageMagick-6.Q32HDRI.pc magick/MagickCore-6.Q32HDRI.pc wand/MagickWand.pc wand/Wa nd.pc wand/MagickWand-6.Q32HDRI.pc wand/Wand-6.Q32HDRI.pc Magick++/lib/Magick++. pc Magick++/lib/ImageMagick++.pc Magick++/lib/Magick++-6.Q32HDRI.pc Magick++/lib /ImageMagick++-6.Q32HDRI.pc '/home/Alan/iminst/lib/pkgconfig' /usr/bin/mkdir -p '/home/Alan/iminst/include/ImageMagick-6/wand' /usr/bin/install -c -m 644 wand/MagickWand.h wand/animate.h wand/compare.h wand /composite.h wand/conjure.h wand/convert.h wand/deprecate.h wand/display.h wand/ drawing-wand.h wand/identify.h wand/import.h wand/magick-image.h wand/magick-pro perty.h wand/magick-wand.h wand/magick_wand.h wand/method-attribute.h wand/mogri fy.h wand/montage.h wand/pixel-iterator.h wand/pixel-wand.h wand/stream.h wand/w and-view.h '/home/Alan/iminst/include/ImageMagick-6/wand' make[2]: Leaving directory '/home/Alan/ImageMagick-6.8.9-6' make[1]: Leaving directory '/home/Alan/ImageMagick-6.8.9-6'
$ wget http://www.imagemagick.org/download/windows/ImageMagick-windows.zip
At 68 MB, this is five times the size of the Unix source. It contains source code for the delegates. To keep the Windows source code separate from the Unix source code, I make a subdirectory winim, change to that directory, and build from there.
$ cd ~ $ mkdir winim $ cd winim $ unzip ../ImageMagick-windows.zip $ cd ImageMagick-6.8.9 $ ./configure --prefix=/home/Alan/iminstw --with-quantum-depth=32 --enable-hdri --with-jp2=yes --with-rsvg=yes --with-windows-font-dir=/cygdrive/c/Windows/Fonts
We need to give the Windows font in Cygwin format. If we give C:\Windows\Fonts, the backslashes are stripped out. Perhaps this could be cured by quoting it.
ImageMagick is configured as follows. Please verify that this configuration matches your expectations. Host system type: x86_64-unknown-cygwin Build system type: x86_64-unknown-cygwin Option Value ------------------------------------------------------------------------------- Shared libraries --enable-shared=yes yes Static libraries --enable-static=yes yes Module support --with-modules=no no GNU ld --with-gnu-ld=yes yes Quantum depth --with-quantum-depth=32 32 High Dynamic Range Imagery --enable-hdri=yes yes Install documentation: yes Delegate Configuration: BZLIB --with-bzlib=yes yes Autotrace --with-autotrace=no no Dejavu fonts --with-dejavu-font-dir=default none DJVU --with-djvu=yes no DPS --with-dps=yes no FFTW --with-fftw=yes no FlashPIX --with-fpx=yes yes FontConfig --with-fontconfig=yes yes FreeType --with-freetype=yes yes GhostPCL None pcl6 (unknown) GhostXPS None gxps (unknown) Ghostscript None gs (9.06) Ghostscript fonts --with-gs-font-dir=default /usr/share/ghostscript/fonts/ Ghostscript lib --with-gslib=no no Graphviz --with-gvc=no JBIG --with-jbig=yes yes JPEG v1 --with-jpeg=yes yes JPEG-2000 --with-jp2= LCMS v1 --with-lcms=no no LCMS v2 --with-lcms2=yes yes LQR --with-lqr=yes no LTDL --with-ltdl=yes no LZMA --with-lzma=yes yes Magick++ --with-magick-plus-plus=yes yes OpenEXR --with-openexr=yes no OpenJP2 --with-openjp2=yes no PANGO --with-pango=yes no PERL --with-perl=no no PNG --with-png=yes yes RSVG --with-rsvg=no no TIFF --with-tiff=yes yes WEBP --with-webp=yes no Windows fonts --with-windows-font-dir=/cygdrive/c/Windows/Fonts /cygdrive/c/Windows/Fonts/ WMF --with-wmf=no no X11 --with-x= yes XML --with-xml=yes no ZLIB --with-zlib=yes yes X11 Configuration: X_CFLAGS = X_PRE_LIBS = -lSM -lICE X_LIBS = X_EXTRA_LIBS = Options used to compile and link: PREFIX = /home/Alan/iminstw EXEC-PREFIX = /home/Alan/iminstw VERSION = 6.8.9 CC = gcc -std=gnu99 -std=gnu99 CFLAGS = -I/usr/include/freetype2 -I/usr/include/libpng15 -fopenmp -g -O2 -Wall -march=core2 -fexceptions -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=32 CPPFLAGS = -I/usr/include/freetype2 -I/usr/include/libpng15 -I/usr/include/freetype2 -I/usr/include/libpng15 -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=32 PCFLAGS = DEFS = -DHAVE_CONFIG_H LDFLAGS = LIBS = CXX = g++ CXXFLAGS = -g -O2 FEATURES = DPC HDRI OpenMP DELEGATES = bzlib mpeg fpx fontconfig freetype jbig jng jpeg lcms lzma png ps tiff x zlib
$ make
CC utilities/animate.o CCLD utilities/animate.exe CC utilities/compare.o CCLD utilities/compare.exe CC utilities/composite.o CCLD utilities/composite.exe CC utilities/conjure.o CCLD utilities/conjure.exe CC utilities/convert.o CCLD utilities/convert.exe CC utilities/display.o CCLD utilities/display.exe CC utilities/identify.o CCLD utilities/identify.exe CC utilities/import.o CCLD utilities/import.exe CC utilities/mogrify.o CCLD utilities/mogrify.exe CC utilities/montage.o CCLD utilities/montage.exe CC utilities/stream.o CCLD utilities/stream.exe cp -f magick/ImageMagick.pc magick/ImageMagick-6.Q32HDRI.pc cp -f magick/MagickCore.pc magick/MagickCore-6.Q32HDRI.pc cp -f wand/MagickWand.pc wand/MagickWand-6.Q32HDRI.pc cp -f wand/Wand.pc wand/Wand-6.Q32HDRI.pc cp -f Magick++/lib/Magick++.pc Magick++/lib/Magick++-6.Q32HDRI.pc cp -f Magick++/lib/ImageMagick++.pc Magick++/lib/ImageMagick++-6.Q32HDRI.pc make[1]: Leaving directory '/home/Alan/winim/ImageMagick-6.8.9'
$ make install
I can run this program from a different Windows command console:
set IMCC=c:\cygwin64\home\Alan\iminst\bin\ %IMCC%convert -version
Version: ImageMagick 6.8.9-6 Q32 x86_64 2014-07-30 http://www.imagemagick.org Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC Features: DPC HDRI OpenMP Delegates: bzlib fontconfig freetype fpx jbig jng jpeg lcms lzma png tiff x zlib
del ci_rose.jpg %IMCC%convert rose: ci_rose.jpg |
convert.exe is not a conventional Windows program. Nor is it exactly Unix. It is, for want of a better term, a Cygwin program. For example, when I run my usual Windows version of convert like this...
F:\web\im>%IM%convert.exe logo: \web\im\u.png
... it simply runs and makes the required output.
My brand new convert.exe does this:
F:\web\im>%IMC%convert.exe logo: \web\im\u.png cygwin warning: MS-DOS style path detected: \web\im\u.png Preferred POSIX equivalent is: /cygdrive/f/web/im/u.png CYGWIN environment variable option "nodosfilewarning" turns off this warning. Consult the user's guide for more details about POSIX paths: http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
Cygwin's convert.exe has seen the backslashes, realised this is Windows-style, and translated it to Unix-style. I suppose this translation occurs in the standard system librares linked-in during the build. If I use forward slashes, this happens:
F:\web\im>%IM%convert.exe logo: /web/im/u.png F:\web\im>%IMC%convert.exe logo: /web/im/u.png convert: UnableToOpenBlob `/web/im/u.png': No such file or directory @ error/blob.c/OpenBlob/2658. convert: WriteBlob Failed `/web/im/u.png' @ error/png.c/MagickPNGErrorHandler/1805.
The conventional Windows program works because Windows can often accept forward-slash instead of the more correct backslash. But the Cygwin version fails. This is because /web/im/u.png is a valid Unix-style filename, so it doesn't try to translate it from Windows style and the Unix directory /web/im doesn't exist.
There is a problem with device names in image filenames:
F:\prose\PICTURES>echo %TEMP% C:\Users\Alan\AppData\Local\Temp F:\prose\PICTURES>%IMCU%convert rose: %TEMP%\r.jpg convert: unable to open image `\Users\Alan\AppData\Local\Temp\r.jpg': No such file or directory @ error/blob.c/OpenBlob/2658.
convert has dopped the C:. Running it with -debug all shows that convert has been given the proper path. The problem may lie in magick\magick.c which contains IsMagickConflict(), which calls NTIsMagickConflict, but only if MAGICKCORE_WINDOWS_SUPPORT is defined. This is defined in magick\magickcore.h, if either WIN32 or WIN64 is defined. I can't see where these two come from.
My computer is 64 bit, so I run ...
set CFLAGS=-DWIN64
... before ./configure and make. But make fails with:
$ make make all-am make[1]: Entering directory '/home/Alan/imdevsrc' CC magick/magick_libMagickCore_6_Q32HDRI_la-animate.lo In file included from magick/animate.c:42:0: ./magick/studio.h:100:21: fatal error: direct.h: No such file or directory # include <direct.h>
As a kludgy solution, I define an environment variable:
for /F "usebackq" %%L in (`cygpath -u %TEMP%`) do set CYGTEMP=%%L echo %CYGTEMP%
/cygdrive/d/temp
I have downloaded and built the Unix version. The Windows download shows the same problem.
To show we really do have 32 bits, we do the same operation with Q16 then with Q32. The operation makes an image with two pixels, and reduces contrast by seven decimal places (three divisions by 100, then one division by 10). In Q16, the two pixels have become the same colour (going by the #-numbers). In Q32, the pixels are not quite the same.
F:\web\im>%IM%convert xc:black xc:white +level 50,51% +level 50,51% +level 50,51% +level 50,60% txt: # ImageMagick pixel enumeration: 1,1,65535,srgb 0,0: (55.05%,55.05%,55.05%) #8CED8CED8CED srgb(55.05%,55.05%,55.05%) # ImageMagick pixel enumeration: 1,1,65535,srgb 0,0: (55.05%,55.05%,55.05%) #8CED8CED8CED srgb(55.05%,55.05%,55.05%) F:\web\im>%IMCC%convert xc:black xc:white +level 50,51% +level 50,51% +level 50,51% +level 50,60% txt: # ImageMagick pixel enumeration: 1,1,4294967295,srgb 0,0: (55.0505%,55.0505%,55.0505%) #8CEDE5008CEDE5008CEDE500 srgb(55.0505%,55.0505%,55.0505%) # ImageMagick pixel enumeration: 1,1,4294967295,srgb 0,0: (55.0505%,55.0505%,55.0505%) #8CEDE7008CEDE7008CEDE700 srgb(55.0505%,55.0505%,55.0505%)
The operation -evaluate Pow N can clip pixels. When N > 1, pixels that are close to zero can be clipped to zero. The round-trip -evaluate Pow N -evaluate Pow 1/N should get back where we started, in this case a smooth gradient.
Q16: %IM%convert ^ -size 1x256 gradient: -rotate 90 ^ -evaluate Pow 40 ^ -evaluate Pow 0.025 ^ ci_grad16.png call %PICTBAT%graph1d ci_grad16.png |
|
Q32 HDRI: %IMCW%convert ^ -size 1x256 gradient: -rotate 90 ^ -evaluate Pow 40 ^ -evaluate Pow 0.025 ^ ci_gradHDRI.png call %PICTBAT%graph1d ci_gradHDRI.png |
|
Q8: %IMG8%convert ^ -size 1x256 gradient: -rotate 90 ^ -evaluate Pow 40 ^ -evaluate Pow 0.025 ^ ci_grad8.png call %PICTBAT%graph1d ci_grad8.png |
The Q8 version is twice as bad as Q16. Q32 HDRI is a big improvement.
From time to time, the ImageMagick developers release new versions. This is how I upgraded to v6.9.0-0. Installing the Windows binary is trivial, of course. Rebuilding from source is slightly more complex.
C:\cygwin64\home\Alan>wget http://www.imagemagick.org/download/windows/ImageMagick-windows.zip C:\cygwin64\home\Alan>ren ImageMagick-windows.zip ImageMagick-windows-6900.zip C:\cygwin64\home\Alan>unzip ImageMagick-windows-6900.zip C:\cygwin64\home\Alan>ren ImageMagick-6.9.0 ImageMagick-6.9.0-0 C:\cygwin64\home\Alan>cd ImageMagick-6.9.0-0 C:\cygwin64\home\Alan>bash $ ./configure --prefix=/home/Alan/iminstw --with-quantum-depth=32 --enable-hdri --with-rsvg=yes --with-windows-font-dir=/cygdrive/c/Windows/Fonts --disable-docs --with-modules
The bottom of the ./configure output says:
ImageMagick is configured as follows. Please verify that this configuration matches your expectations. Host system type: x86_64-unknown-cygwin Build system type: x86_64-unknown-cygwin 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=32 32 High Dynamic Range Imagery --enable-hdri=yes yes Install documentation: no Delegate Configuration: BZLIB --with-bzlib=yes yes Autotrace --with-autotrace=no no Dejavu fonts --with-dejavu-font-dir=default none DJVU --with-djvu=yes no DPS --with-dps=yes no FFTW --with-fftw=yes no FlashPIX --with-fpx=yes yes FontConfig --with-fontconfig=yes yes FreeType --with-freetype=yes yes GhostPCL None pcl6 (unknown) GhostXPS None gxps (unknown) Ghostscript None gs (9.06) Ghostscript fonts --with-gs-font-dir=default /usr/share/ghostscript/fonts/ Ghostscript lib --with-gslib=no no Graphviz --with-gvc=no JBIG --with-jbig=yes yes JPEG v1 --with-jpeg=yes yes JPEG-2000 --with-jp2= LCMS v1 --with-lcms=no no LCMS v2 --with-lcms2=yes yes LQR --with-lqr=yes no LTDL --with-ltdl=yes yes LZMA --with-lzma=yes yes Magick++ --with-magick-plus-plus=yes yes OpenEXR --with-openexr=yes no OpenJP2 --with-openjp2=yes no PANGO --with-pango=yes no PERL --with-perl=no no PNG --with-png=yes yes RSVG --with-rsvg=yes no TIFF --with-tiff=yes yes WEBP --with-webp=yes no Windows fonts --with-windows-font-dir=/cygdrive/c/Windows/Fonts /cygdrive/c/Windows/Fonts/ WMF --with-wmf=no no X11 --with-x= yes XML --with-xml=yes no ZLIB --with-zlib=yes yes X11 Configuration: X_CFLAGS = X_PRE_LIBS = -lSM -lICE X_LIBS = X_EXTRA_LIBS = Options used to compile and link: PREFIX = /home/Alan/iminstw EXEC-PREFIX = /home/Alan/iminstw VERSION = 6.9.0 CC = gcc -std=gnu99 -std=gnu99 CFLAGS = -I/usr/include/freetype2 -I/usr/include/libpng15 -fopenmp -g -O2 -Wall -march=core2 -fexceptions -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=32 CPPFLAGS = -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=32 PCFLAGS = DEFS = -DHAVE_CONFIG_H LDFLAGS = LIBS = CXX = g++ CXXFLAGS = -g -O2 FEATURES = DPC HDRI OpenMP Modules DELEGATES = bzlib mpeg fpx fontconfig freetype jbig jng jpeg lcms lzma png ps tiff x zlib
$ make $ make install $ exit
Verify the installation:
C:\cygwin64\home\Alan\ImageMagick-6.9.0>..\iminstw\bin\convert -version
Version: ImageMagick 6.9.0-0 Q32 x86_64 2014-11-22 http://www.imagemagick.org Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC Features: DPC HDRI OpenMP Delegates (built-in): bzlib fontconfig freetype fpx jbig jng jpeg lcms lzma png tiff x zlib
I have written a number of process modules. (See my page Process modules.) I want these to be available in the new IM build.
First, we copy the source code.
xcopy ..\imdevsrc\filters\*.c filters\ xcopy ..\imdevsrc\filters\*.h filters\
(Don't overwrite any files.)
We edit filters\makefile.am, adding in any stuff we added to ..\imdevsrc\filters\makefile.am.
If we hadn't used --with-modules, we would also need to edit magick/module.c and magick/static.c,
Then we rebuild IM. As we are now merely adding modules, we can skip autoconf and ./configure, so make is quick.
bash $ automake $ make $ make install $ exit
Check that IM can see the modules:
..\iminstw\bin\convert -list module
Path: /home/Alan/iminstw/lib/ImageMagick-6.9.0//modules-Q32HDRI/filters Image Filter ------------------------------------------------------------------------------- addend analyze applines cumulhisto drawcirc dumpimage echostuff eqfish2rect geodist grad2 growcut hellow img2knl invclut mkgauss mkhisto onewhite rect2eqfish replaceall replaceeach replacefirst replacelast replacespec segscanmerge sortlines sortpixels
For my development work, I've been using IM v6.9.0-0 for some months. It doesn't include some new features that I need. It is time to upgrade again.
From Install from Windows Source , I download ImageMagick-windows.zip.
Unzip it to a new directory c:\cygwin64\home\Alan\ImageMagick-6.9.3-7\. It takes about 450 MB. That directory now contains sub-directories for delegates, and sub-directory VisualMagick for building with Microsoft software, and sub-directory ImageMagick which contains the IM source and files required for a Cygwin build.
cd c:\cygwin64\home\Alan\ImageMagick-6.9.3-7\ImageMagick
Environment variable %IMSRC% is currently:
IMSRC=c:\cygwin64\home\Alan\ImageMagick-6.9.0-0
%IMSRC%\filters contains source for my process modules. %IMSRC%\snibgo contains various *.c and *.sh and files. %IMSRC% contains some *.h and files.
c:\cygwin64\home\Alan\ImageMagick-6.9.3-7\ImageMagick>xcopy %IMSRC%\filters\*.c filters\ c:\cygwin64\home\Alan\ImageMagick-6.9.3-7\ImageMagick>xcopy %IMSRC%\filters\*.inc filters\ c:\cygwin64\home\Alan\ImageMagick-6.9.3-7\ImageMagick>xcopy %IMSRC%\filters\*.h filters\ c:\cygwin64\home\Alan\ImageMagick-6.9.3-7\ImageMagick>xcopy %IMSRC%\filters\*.am filters\ c:\cygwin64\home\Alan\ImageMagick-6.9.3-7\ImageMagick>xcopy %IMSRC%\snibgo\*.c snibgo\ c:\cygwin64\home\Alan\ImageMagick-6.9.3-7\ImageMagick>xcopy %IMSRC%\snibgo\*.sh snibgo\ c:\cygwin64\home\Alan\ImageMagick-6.9.3-7\ImageMagick>xcopy %IMSRC%\*.h .
bash # automake
(This gives a message: "sh: gitversion: command not found".)
# autoconf # ./configure --prefix=/home/Alan/imdevins6937 --with-quantum-depth=32 --enable-hdri --with-rsvg=yes --with-windows-font-dir=/cygdrive/c/Windows/Fonts --disable-docs --with-modules
============================================================================== ImageMagick is configured as follows. Please verify that this configuration matches your expectations. Host system type: x86_64-unknown-cygwin Build system type: x86_64-unknown-cygwin 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=32 32 High Dynamic Range Imagery --enable-hdri=yes yes Install documentation: no Delegate Library Configuration: BZLIB --with-bzlib=yes yes Autotrace --with-autotrace=no no DJVU --with-djvu=yes no DPS --with-dps=yes no FFTW --with-fftw=yes yes FlashPIX --with-fpx=yes yes FontConfig --with-fontconfig=yes yes FreeType --with-freetype=yes yes Ghostscript lib --with-gslib=no no Graphviz --with-gvc=yes no JBIG --with-jbig=yes yes JPEG v1 --with-jpeg=yes yes LCMS --with-lcms=yes yes LQR --with-lqr=yes no LTDL --with-ltdl=yes yes LZMA --with-lzma=yes yes Magick++ --with-magick-plus-plus=yes yes OpenEXR --with-openexr=yes no OpenJP2 --with-openjp2=yes no PANGO --with-pango=yes yes PERL --with-perl=no no PNG --with-png=yes yes RAQM --with-raqm=yes no RSVG --with-rsvg=yes yes TIFF --with-tiff=yes yes WEBP --with-webp=yes yes WMF --with-wmf=yes yes X11 --with-x= yes XML --with-xml=yes yes ZLIB --with-zlib=yes yes Delegate Program Configuration: GhostPCL None pcl6 (unknown) GhostXPS None gxps (unknown) Ghostscript None gs (9.15) Font Configuration: Apple fonts --with-apple-font-dir=default Dejavu fonts --with-dejavu-font-dir=default none Ghostscript fonts --with-gs-font-dir=default /usr/share/ghostscript/fonts/ Windows fonts --with-windows-font-dir=/cygdrive/c/Windows/Fonts /cygdriv e/c/Windows/Fonts/ X11 Configuration: X_CFLAGS = X_PRE_LIBS = -lSM -lICE X_LIBS = X_EXTRA_LIBS = Options used to compile and link: PREFIX = /home/Alan/imdevins6937 EXEC-PREFIX = /home/Alan/imdevins6937 VERSION = 6.9.3 CC = gcc -std=gnu99 -std=gnu99 CFLAGS = -I/usr/include/libxml2 -I/usr/include/cairo -I/usr/includ e/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/fr eetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 -D_REENTRANT -I/usr/include/librsvg-2.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/i nclude/libpng16 -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0 /include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng1 6 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libpng16 -D _REENTRANT -I/usr/include/pango-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/us r/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/i nclude/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/inclu de/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/li bpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 -fopenmp -g -O2 -Wal l -mtune=haswell -fexceptions -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_D EPTH=32 CPPFLAGS = -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=32 PCFLAGS = DEFS = -DHAVE_CONFIG_H LDFLAGS = LIBS = CXX = g++ CXXFLAGS = -g -O2 FEATURES = DPC HDRI Cipher OpenMP Modules DELEGATES = bzlib mpeg fftw fpx fontconfig freetype jbig jng jpeg lcms lzma pango png ps rsvg tiff webp wmf x xml zlib ==============================================================================
Finish the build:
# make # make install # exit
Set the new values of environment variables.
set IMDEV=C:\cygwin64\home\Alan\imdevins6937\bin\ set IMFILTSRC=C:\cygwin64\home\Alan\ImageMagick-6.9.3-7\ImageMagick\filters\ set IMSRC=c:\cygwin64\home\Alan\ImageMagick-6.9.3-7\ImageMagickInstalling a development environment for v7 works in a similar way. I need parallel development of both v6 and v7, with both builds using a single version of my own source code.
Unzip the 103 MB zip file to c:\cygwin64\home\Alan\imagemagick-7.0.1-0\.
Set IM7SRC.
Copy my source files from v6 directories to v7. This could be done with symbolic links, but I prefer physically separate files.
call %PICTBAT%snibSrc6to7 cd %IM7SRC% bash # ./configure --prefix=/home/Alan/imdevins7010 --with-quantum-depth=32 --enable-hdri --with-rsvg=yes --with-windows-font-dir=/cygdrive/c/Windows/Fonts --disable-docs --with-modules --enable-legacy-support
This shows:
ImageMagick is configured as follows. Please verify that this configuration matches your expectations. Host system type: x86_64-unknown-cygwin Build system type: x86_64-unknown-cygwin 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=32 32 High Dynamic Range Imagery --enable-hdri=yes yes Install documentation: yes Delegate Library Configuration: BZLIB --with-bzlib=yes yes Autotrace --with-autotrace=no no DJVU --with-djvu=yes no DPS --with-dps=yes no FFTW --with-fftw=yes yes FLIF --with-flif=yes no FlashPIX --with-fpx=yes yes FontConfig --with-fontconfig=yes yes FreeType --with-freetype=yes yes Ghostscript lib --with-gslib=no no Graphviz --with-gvc=yes no JBIG --with-jbig=yes yes JPEG v1 --with-jpeg=yes yes LCMS --with-lcms=yes yes LQR --with-lqr=yes no LTDL --with-ltdl=yes yes LZMA --with-lzma=yes yes Magick++ --with-magick-plus-plus=yes yes OpenEXR --with-openexr=yes no OpenJP2 --with-openjp2=yes no PANGO --with-pango=yes yes PERL --with-perl=no no PNG --with-png=yes yes RAQM --with-raqm=yes no RSVG --with-rsvg=yes yes TIFF --with-tiff=yes yes WEBP --with-webp=yes yes WMF --with-wmf=yes yes X11 --with-x= yes XML --with-xml=yes yes ZLIB --with-zlib=yes yes Delegate Program Configuration: GhostPCL None pcl6 (unknown) GhostXPS None gxps (unknown) Ghostscript None gs (9.15) Font Configuration: Apple fonts --with-apple-font-dir=default Dejavu fonts --with-dejavu-font-dir=default none Ghostscript fonts --with-gs-font-dir=default /usr/share/ghostscript/fonts/ Windows fonts --with-windows-font-dir=/cygdrive/c/Windows/Fonts /cygdrive/c/Windows/Fonts/ X11 Configuration: X_CFLAGS = X_PRE_LIBS = -lSM -lICE X_LIBS = X_EXTRA_LIBS = Options used to compile and link: PREFIX = /home/Alan/imdevins7010 EXEC-PREFIX = /home/Alan/imdevins7010 VERSION = 7.0.1 CC = gcc -std=gnu99 -std=gnu99 CFLAGS = -I/usr/include/libxml2 -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 -D_REENTRANT -I/usr/include/librsvg-2.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libpng16 -D_REENTRANT -I/usr/include/pango-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 -fopenmp -g -O2 -Wall -mtune=haswell -fexceptions -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=32 CPPFLAGS = -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=32 PCFLAGS = DEFS = -DHAVE_CONFIG_H LDFLAGS = LIBS = CXX = g++ CXXFLAGS = -g -O2 FEATURES = DPC HDRI Cipher OpenMP Modules DELEGATES = bzlib mpeg fftw fpx fontconfig freetype jbig jng jpeg lcms lzma pango png ps rsvg tiff webp wmf x xml zlib
Finish the build:
# make # make install # exit
f:\web\im>%IM7DEV%magick -version Version: ImageMagick 7.0.1-0 Q32 x86_64 2016-05-14 http://www.imagemagick.org Copyright: Copyright (C) 1999-2016 ImageMagick Studio LLC License: http://www.imagemagick.org/script/license.php Features: Cipher DPC HDRI Modules OpenMP Delegates (built-in): bzlib cairo fftw fontconfig fpx freetype jbig jng jpeg lcms ltdl lzma pangocairo png rsvg tiff webp wmf x xml zlib
This is how I build IM from the IM repository. The operations are similar to above: download the source code (ie "clone" the libraries), then run automake, autoconf, ./configure and make install. Lines beginning with "$" are bash commands.
cd imagemagick-7.1.1-4B $ git clone https://github.com/ImageMagick/ImageMagick-Windows.git ImageMagick-Windows-7
The subdirectory ImageMagick-Windows-7 now contains a few files. In particular, CloneRepositories.sh to download sources of ImageMagick and common delegates. I ignore *.cmd files.
priv * cd ImageMagick-Windows-7 $ ./CloneRepositories.sh "https://github.com/ImageMagick" "full"
Sources for ImageMagick and delegates are in appropriate subdirectories.
cd ImageMagick
If we want this build to include my process modules, then copy them from somewhere:
set FROMDIR=c:\cygwin64\home\Alan\imagemagick-7.1.0-19\ImageMagick\im-win-forfx3\ImageMagick xcopy %FROMDIR%\*.sh . xcopy %FROMDIR%\*.h . xcopy %FROMDIR%\filters\* filters\ xcopy %FROMDIR%\snibgo\* snibgo\
Edit imconf.sh to set "--prefix" to a new directory such as /home/Alan/imdevins7114 (which does not need to exist). Then:
automake autoconf ./imconf.sh make make install
After ./imconf.sh we should check that all required delegates are present. For example, we might have:
Delegate library configuration: PNG --with-png=yes no
Oops. Why don't we have PNG? Earlier in config.log we find:
configure:33133: checking for libpng >= 1.0.0 configure:33140: $PKG_CONFIG --exists --print-errors "libpng >= 1.0.0" Package libpng was not found in the pkg-config search path. Perhaps you should add the directory containing `libpng.pc' to the PKG_CONFIG_PATH environment variable
We can verify the problem at the command line:
/usr/bin/pkg-config --exists --print-errors "libpng >= 1.0.0"
... and we get the same error.
There seem to be two problems: libpng.pc does not exist, and IM isn't looking for it in the right place. The following will fix these problems. There may be overkill.
pushd ..\png dir *pc*
If the PNG directory has libpng.pc.in but not libpng.pc, then create it with automake, autoconf, ./configure, make install.
Return to the IM directory, and try pkg-config again.
popd /usr/bin/pkg-config --exists --print-errors "libpng >= 1.0.0"
If that fails, then set (or expand) the PKG_CONFIG_PATH:
echo $PKG_CONFIG_PATH export PKG_CONFIG_PATH=~/imagemagick-7.1.1-4B/ImageMagick-Windows-7/png:~/imagemagick-7.1.1-4B/ImageMagick-Windows-7/raw export PKG_CONFIG_PATH=$PWD/../png /usr/bin/pkg-config --exists --print-errors "libpng >= 1.0.0"
If that works, then re-build IM:
automake autoconf ./imconf.sh make make install
With luck, IM now has a PNG delegate.
Edit imagepath.bat to point to new installation, eg:
set IM7DEV=C:\cygwin64\home\Alan\imdevins7114\bin\
Check the version, delegates and modules:
%IM7DEV%magick -version %IM7DEV%magick -list module
The bash script instim8.sh builds eight varieties of IM: Q8, Q16, Q32 and Q64; and integer or floating-point.
bash $ cd ~ $ ./instim8.sh $ exit
The Windows script setIm8.bat sets environment variables to use these varieties.
call %PICTBAT%setIm8
We can find the memory requirements, in bytes per channel per pixel:
call %PICTBAT%bytesPerCh
int | fp | |
---|---|---|
Q8 | 1 | 4 |
Q16 | 2 | 4 |
Q32 | 4 | 8 |
Q64 | 8 | 8 |
Currently, building a Q64 non-HDRI results in a Q64 HDRI variety.
%IM64i%convert xc: -process hellow NULL: |findstr HDRI
Includes HDRI
We can compare the precision of the seven varieties:
set OPERATION=-evaluate Pow 40 -evaluate Pow 0.025
Q8 int: %IM8i%convert ^ -size 1x256 gradient: ^ -rotate 90 ^ %OPERATION% ^ -format %%[fx:mean] -write info: ^ ci_g8i.png 0.13436 call %PICTBAT%graph1d ci_g8i.png |
Q8 float: %IM8f%convert ^ -size 1x256 gradient: ^ -rotate 90 ^ %OPERATION% ^ -format %%[fx:mean] -write info: ^ ci_g8f.png 0.497918 call %PICTBAT%graph1d ci_g8f.png |
||
Q16 int: %IM16i%convert ^ -size 1x256 gradient: ^ -rotate 90 ^ %OPERATION% ^ -format %%[fx:mean] -write info: ^ ci_g16i.png 0.225047 call %PICTBAT%graph1d ci_g16i.png |
Q16 float: %IM16f%convert ^ -size 1x256 gradient: ^ -rotate 90 ^ %OPERATION% ^ -format %%[fx:mean] -write info: ^ ci_g16f.png 0.498392 call %PICTBAT%graph1d ci_g16f.png |
||
Q32 int: %IM32i%convert ^ -size 1x256 gradient: ^ -rotate 90 ^ %OPERATION% ^ -format %%[fx:mean] -write info: ^ ci_g32i.png 0.342347 call %PICTBAT%graph1d ci_g32i.png |
Q32 float: %IM32f%convert ^ -size 1x256 gradient: ^ -rotate 90 ^ %OPERATION% ^ -format %%[fx:mean] -write info: ^ ci_g32f.png 0.5 call %PICTBAT%graph1d ci_g32f.png |
||
(integer Q64 is not available) |
Q64 float: %IM64f%convert ^ -size 1x256 gradient: ^ -rotate 90 ^ %OPERATION% ^ -format %%[fx:mean] -write info: ^ ci_g64f.png 0.5 call %PICTBAT%graph1d ci_g64f.png |
The seven versions of IM have created seven different results. In this test, all the HDRI varieties are more accurate than all the non-HDRI varieties.
Timings from a speed trial imSpeeds.bat, with results in seconds, are:
int | fp | |
---|---|---|
Q8 | 75 | 82 |
Q16 | 83 | 84 |
Q32 | 108 | 116 |
Q64 | 217 |
HDRI and larger Q-numbers impose speed penalties. However, Q16f is hardly any slower than Q16i.
This bash script builds eight versions of IM. It is in the directory C:\cygwin64\home\Alan\. It assumes a distribution has been unpacked into %IMSRC%, eg ~/ImageMagick-6.8.9-6. It takes about 90 minutes to run. It doesn't check that the builds have succeeded.
# Updated: # 18-July-2018 Added --with-gcc-arch=target cd ~ mkdir iminst8i mkdir iminst16i mkdir iminst32i mkdir iminst64i mkdir iminst8f mkdir iminst16f mkdir iminst32f mkdir iminst64f cd $IMSRC export BASE_CONF='--with-rsvg=yes --with-windows-font-dir=/cygdrive/c/Windows/Fonts --disable-docs --with-modules --with-gcc-arch=target' ./configure $BASE_CONF --prefix=/home/Alan/iminst8i --with-quantum-depth=8 make make install ./configure $BASE_CONF --prefix=/home/Alan/iminst16i --with-quantum-depth=16 make make install ./configure $BASE_CONF --prefix=/home/Alan/iminst32i --with-quantum-depth=32 make make install ./configure $BASE_CONF --prefix=/home/Alan/iminst64i --with-quantum-depth=64 make make install ./configure $BASE_CONF --prefix=/home/Alan/iminst8f --with-quantum-depth=8 --enable-hdri make make install ./configure $BASE_CONF --prefix=/home/Alan/iminst16f --with-quantum-depth=16 --enable-hdri make make install ./configure $BASE_CONF --prefix=/home/Alan/iminst32f --with-quantum-depth=32 --enable-hdri make make install ./configure $BASE_CONF --prefix=/home/Alan/iminst64f --with-quantum-depth=64 --enable-hdri make make install cd ~
This cmd script creates enviroment variables for the eight versions of IM, and verifies that convert works for each. It is in the directory %PICTBAT%.
set IM8i=c:\cygwin64\home\Alan\iminst8i\bin\ set IM16i=c:\cygwin64\home\Alan\iminst16i\bin\ set IM32i=c:\cygwin64\home\Alan\iminst32i\bin\ set IM64i=c:\cygwin64\home\Alan\iminst64i\bin\ set IM8f=c:\cygwin64\home\Alan\iminst8f\bin\ set IM16f=c:\cygwin64\home\Alan\iminst16f\bin\ set IM32f=c:\cygwin64\home\Alan\iminst32f\bin\ set IM64f=c:\cygwin64\home\Alan\iminst64f\bin\ %IM8i%convert --version if ERRORLEVEL 1 exit /B 1 %IM16i%convert --version if ERRORLEVEL 1 exit /B 1 %IM32i%convert --version if ERRORLEVEL 1 exit /B 1 %IM64i%convert --version if ERRORLEVEL 1 exit /B 1 %IM8f%convert --version if ERRORLEVEL 1 exit /B 1 %IM16f%convert --version if ERRORLEVEL 1 exit /B 1 %IM32f%convert --version if ERRORLEVEL 1 exit /B 1 %IM64f%convert --version if ERRORLEVEL 1 exit /B 1
Getting the results in the form of a table is slightly messy. Note that, in this compilation, -process hellow ends each line just with the single byte '\n', not the two bytes '\r\n'.
set OUT_LIS=bytesPerCh.csv del %OUT_LIS% 2>nul echo Q8 >>%OUT_LIS% %IM8i%convert xc: -process hellow NULL: |findstr /C:" Quantum" >>%OUT_LIS% %IM8f%convert xc: -process hellow NULL: |findstr /C:" Quantum" >>%OUT_LIS% echo XXQ16 >>%OUT_LIS% %IM16i%convert xc: -process hellow NULL: |findstr /C:" Quantum" >>%OUT_LIS% %IM16f%convert xc: -process hellow NULL: |findstr /C:" Quantum" >>%OUT_LIS% echo XXQ32 >>%OUT_LIS% %IM32i%convert xc: -process hellow NULL: |findstr /C:" Quantum" >>%OUT_LIS% %IM32f%convert xc: -process hellow NULL: |findstr /C:" Quantum" >>%OUT_LIS% echo XXQ64 >>%OUT_LIS% %IM64i%convert xc: -process hellow NULL: |findstr /C:" Quantum" >>%OUT_LIS% %IM64f%convert xc: -process hellow NULL: |findstr /C:" Quantum" >>%OUT_LIS% chBin /p0 /i%OUT_LIS% /f\r chBin /p0 /i%OUT_LIS% /f\n chStrs /p0 /i%OUT_LIS% /fQuantum /t, chStrs /p0 /i%OUT_LIS% /f" " /t" " chBin /p0 /i%OUT_LIS% /fXX /t\r\n cPrefix /p0 /i%OUT_LIS% /t,int,fp call csv2tab bytesPerCh
del speedTrial.lis %IM8i%convert -version %IM16i%convert -version %IM32i%convert -version %IM64i%convert -version %IM8f%convert -version %IM16f%convert -version %IM32f%convert -version %IM64f%convert -version call %PICTBAT%imSpeedTrial %IM8i% call %PICTBAT%imSpeedTrial %IM16i% call %PICTBAT%imSpeedTrial %IM32i% call %PICTBAT%imSpeedTrial %IM64i% call %PICTBAT%imSpeedTrial %IM8f% call %PICTBAT%imSpeedTrial %IM16f% call %PICTBAT%imSpeedTrial %IM32f% call %PICTBAT%imSpeedTrial %IM64f% type speedTrial.lis
echo %1 >>speedTrial.lis set OP=-size 7500x5000 ^ xc:#f00 ^ gradient:#0f0-#00f ^ -compose Over -composite ^ -blur 0x2 ^ +level 10,20%% ^ -sigmoidal-contrast 3,50%% ^ -evaluate Pow 3 ^ -colorspace RGB ^ -colorspace sRGB %1convert ^ %OP% ^ NULL: call StopWatch %1convert ^ %OP% ^ +delete ^ %OP% ^ +delete ^ %OP% ^ +delete ^ %OP% ^ +delete ^ %OP% ^ +delete ^ %OP% ^ +delete ^ %OP% ^ +delete ^ %OP% ^ +delete ^ %OP% ^ +delete ^ %OP% ^ NULL: call StopWatch >>speedTrial.lis
All images on this page were created by the commands shown.
My usual version of v6 IM is:
%IM%identify -version
Version: ImageMagick 6.9.12-72 Q16-HDRI x64 55ae040:20221230 https://legacy.imagemagick.org Copyright: (C) 1999 ImageMagick Studio LLC License: https://imagemagick.org/script/license.php Visual C++: 193431937 Features: Cipher DPC HDRI OpenCL Delegates (built-in): bzlib cairo freetype gslib heic jng jp2 jpeg lcms lqr lzma openexr pangocairo png ps raqm raw rsvg tiff webp xml zlib
My usual version of v7 IM is:
%IMG7%magick -version
Version: ImageMagick 7.1.1-15 Q16-HDRI x64 a0a5f3d:20230730 https://imagemagick.org Copyright: (C) 1999 ImageMagick Studio LLC License: https://imagemagick.org/script/license.php Features: Cipher DPC HDRI OpenCL OpenMP(2.0) Delegates (built-in): bzlib cairo freetype gslib heic jng jp2 jpeg jxl lcms lqr lzma openexr pangocairo png ps raqm raw rsvg tiff webp xml zip zlib Compiler: Visual Studio 2022 (193532217)
One of the varieties shown here is:
%IM32f%identify -version
Version: ImageMagick 6.9.9-40 Q32 x86_64 2018-07-21 http://www.imagemagick.org Copyright: © 1999-2018 ImageMagick Studio LLC License: http://www.imagemagick.org/script/license.php Features: Cipher DPC HDRI Modules OpenMP Delegates (built-in): bzlib cairo fftw fontconfig fpx freetype jbig jng jpeg lcms ltdl lzma pangocairo png rsvg tiff webp wmf x xml zlib
Another variety is:
%IM7DEV%magick -version
Version: ImageMagick 7.1.1-20 (Beta) Q32-HDRI x86_64 66c30fc22:20231002 https://imagemagick.org Copyright: (C) 1999 ImageMagick Studio LLC License: https://imagemagick.org/script/license.php Features: Cipher DPC HDRI Modules OpenCL OpenMP(4.5) Delegates (built-in): bzlib cairo fftw fontconfig freetype heic jbig jng jpeg lcms ltdl lzma pangocairo png raqm raw rsvg tiff webp wmf x xml zip zlib Compiler: gcc (11.3)
Source file for this web page is compim.h1. To re-create this web page, run "procH1 compim".
This page, including the images, is my copyright. Anyone is permitted to use or adapt any of the code, scripts or images for any purpose, including commercial use.
Anyone is permitted to re-publish this page, but only for non-commercial use.
Anyone is permitted to link to this page, including for commercial use.
Page version v2.0 23-November-2014.
Page created 19-Oct-2023 13:48:46.
Copyright © 2023 Alan Gibson.