You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
403 lines
17 KiB
403 lines
17 KiB
Download & Unpack |
|
|
|
Building ImageMagick source for Windows requires a modern version of Microsoft |
|
Visual Studio IDE. Users have reported success with the Borland C++ compiler |
|
as well. If you don't have a compiler you can still install a self-installing |
|
binary release. |
|
|
|
Download ImageMagick-windows.zip from ftp.imagemagick.org or its mirrors |
|
and verify the distribution against its message digest. |
|
|
|
You can unpack the distribution with WinZip or type the following from any |
|
MS-DOS Command Prompt window: |
|
|
|
$magick> unzip ImageMagick-windows.zip |
|
|
|
Now that you have the ImageMagick Windows source distribution unpacked, |
|
let's configure it. |
|
|
|
Configure |
|
|
|
These instructions are specific to building ImageMagick with the Visual |
|
Studio under Windows XP, Win2K, or Windows 98. ImageMagick does not include |
|
any workspace (DSW) or project files (DSP) except for those included with |
|
third party libraries. Instead, there is a configure program that must be |
|
built and run which creates the Visual Studio workspaces for ImageMagick. The |
|
Visual Studio system provides four different types of runtime environments |
|
that must match across all application, library, and dynamic-library (DLL) |
|
code that is built. The configure program creates a set of build files that |
|
are consistent for a specific runtime selection listed here: |
|
|
|
1. Dynamic Multi-threaded DLL runtimes (VisualDynamicMT). |
|
2. Static Single-threaded runtimes (VisualStaticST). |
|
3. Static Multi-threaded runtimes (VisualStaticMT). |
|
4. Static Multi-threaded DLL runtimes (VisualStaticMTDLL). |
|
|
|
In addition to these runtimes, the VisualMagick build environment allows |
|
you to select whether to include the X11 libraries in the build or not. X11 |
|
DLLs and headers are provided with the VisualMagick build environment. Most |
|
Windows users are probably not interested in using X11, so you might prefer |
|
to build without X11 support. Since the animate, display, and import program |
|
depends on the X11 delegate libraries, these programs will no work if you |
|
choose not to include X11 support. |
|
|
|
This leads to five different possible build options. The default binary |
|
distribution is built using the Dynamic Multi-threaded DLL (VisualDynamicMT) |
|
option with the X11 libraries included. This results in an X11 compatible |
|
build using all DLL's for everything and multi-threaded support (the only |
|
option for DLL's). |
|
|
|
To create a workspace for your requirements, simply go to the |
|
VisualMagick\configure folder and open the configure.dsw workspace (for |
|
Visual Studio 6) or configure.sln (for Visual Studio 7 or 8). Set the build |
|
configuration to Release. |
|
|
|
Build and execute the configure program and follow the on-screen |
|
instructions. You should not change any of the defaults unless you have a |
|
specific reason to do so. |
|
|
|
The configure program has a button entitled: |
|
|
|
Edit "magick_config.h" |
|
|
|
Click on this button to bring up magick-config.h in Windows Notepad. Review |
|
and optionally change any preprocessor defines in ImageMagick's |
|
magick_config.h file to suit your needs. This file is copied to |
|
magick\magick_config.h. You may safely open magick\magick_config.h, modify |
|
it, and recompile without re-running the configure program. In fact, using |
|
Notepad to edit the copied file may be preferable since it preserves the |
|
original magick_config.h file. |
|
|
|
Key user defines in magick_config.h include: |
|
|
|
MAGICKCORE_QUANTUM_DEPTH (default 16) |
|
Specify the depth of the pixel component depth (8, 16, or 32). A value of |
|
8 uses half the memory than 16 and may run 30% faster, but provides 256 |
|
times less color resolution than a value of 16. We recommend a quantum |
|
depth of 16 because 16-bit images are becoming more prevalent on the |
|
Internet. |
|
|
|
MAGICKCORE_INSTALLED_SUPPORT (default undefined) |
|
Define to build a ImageMagick which uses registry settings or embedded |
|
paths to locate installed components (coder modules and configuration |
|
files). The default is to look for all files in the same directory as |
|
the executable. You will wand to define this value if you intend on |
|
installing ImageMagick on your system. |
|
|
|
ProvideDllMain (default defined) |
|
Define to include a DllMain() function ensures that the ImageMagick |
|
DLL is properly initialized without participation from dependent |
|
applications. This avoids the requirement to invoke IntializeMagick() |
|
from dependent applications is only useful for DLL builds. |
|
|
|
ImageMagick is now configured and ready to build. |
|
|
|
The default build is WIN32. For 64-bit, open a newly created static solution |
|
and enter Configuration Manager. Add a x64 configuration, copying the |
|
configuration from WIn32. Be sure that it adds the configuration to all the |
|
projects. Now compile. |
|
|
|
Build |
|
|
|
After creating your build environment, proceed to open the DSW (or SLN) |
|
workspace in the VisualMagick folder. In the DSW file choose the All project |
|
to make it the active project. Set the build configuration to the desired one |
|
(Debug, or Release) and clean and build: |
|
|
|
1. Right click on the All project and select Set As Active Project |
|
2. Select "Build=>Clean Solution" |
|
3. Select "Build=>Build Solution" |
|
|
|
The clean step is necessary in order to make sure that all of the target |
|
support libraries are updated with any patches needed to get them to compile |
|
properly under Visual Studio. |
|
|
|
After a successful build, all of the required files that are needed to run |
|
any of the command line tools are located in the VisualMagick\bin folder. This |
|
includes EXE, DLL libraries, and ImageMagick configuration files. You should |
|
be able to test the build directly from this directory without having to |
|
move anything to any of the global SYSTEM or SYSTEM32 areas in the operating |
|
system installation. |
|
|
|
The Visual Studio distribution of ImageMagick comes with the Magick++ |
|
C++ wrapper by default. This add-on layer has a large number of demo |
|
and test files that can be found in ImageMagick\Magick++\demo, and |
|
ImageMagick\Magick++\tests. There are also a variety of tests that use the |
|
straight C API as well in ImageMagick\tests. |
|
|
|
All of these programs are not configured to be built in the default workspace |
|
created by the configure program. You can cause all of these demos and test |
|
programs to be built by checking the box in configure that says: |
|
|
|
Include all demo and test programs |
|
|
|
In addition, there is another related checkbox (checked by default) that |
|
causes all generated project files to be created standalone so that they |
|
can be copied to other areas of you system. |
|
|
|
This the checkbox: |
|
|
|
Generate all utility projects with full paths rather then relative paths. |
|
|
|
Visual Studio uses a concept of dependencies that tell it what other |
|
components need to be build when a particular project is being build. This |
|
mechanism is also used to ensure that components link properly. In my normal |
|
development environment, I want to be able to make changes and debug the |
|
system as a whole, so I like and NEED to use dependencies. However, most end |
|
users don't want to work this way. |
|
|
|
Instead they really just want to build the package and then get down to |
|
business working on their application. The solution is to make all the utility |
|
projects (UTIL_xxxx_yy_exe.dsp) use full absolute paths to all the things they |
|
need. This way the projects stand on their own and can actually be copied |
|
and used as templates to get a particular custom application compiling with |
|
little effort. |
|
|
|
With this feature enabled, you should be able to nab a copy of |
|
|
|
VisualMagick\utilities\UTIL_convert_xxx_exe.dsp (for C) or |
|
VisualMagick\Magick++\demo\UTIL_demo_xxx_exe.dsp (for C++) |
|
|
|
and pop it into Notepad, modify it (carefully) to your needs and be on your |
|
way to happy compiling and linking. |
|
|
|
You can feel free to pick any of the standard utilities, tests, or demo |
|
programs as the basis for a new program by copying the project and the source |
|
and hacking away. |
|
|
|
The choice of what to use as a starting point is very easy. |
|
|
|
For straight C API command line applications use something from: |
|
|
|
ImageMagick\tests or |
|
ImageMagick\utilities (source code) or |
|
ImageMagick\VisualMagick\tests or |
|
ImageMagick\Visualmagick\utilities (project - DSP) |
|
|
|
For C++ and Magick++ command line applications use something from: |
|
|
|
ImageMagick\Magick++\tests or ImageMagick\Magick++\demo (source code) or |
|
ImageMagick\VisualMagick\Magick++\tests or |
|
ImageMagick\VisualMagick\Magick++\demo (project - DSP) |
|
|
|
For C++ and Magick++ and MFC windows applications use: |
|
|
|
ImageMagick\contrib\win32\MFC\NtMagick (source code) or |
|
ImageMagick\VisualMagick\contrib\win32\MFC\NtMagick (project - DSP) |
|
|
|
The ImageMagick distribution is very modular. The default configuration is |
|
there to get you rolling, but you need to make some serious choices when |
|
you wish to change things around. |
|
|
|
The default options are all targeted at having all the components in one place |
|
(e.g. the bin directory of the VisualMagick build tree). These components |
|
may be copied to another folder (such as to another computer). |
|
|
|
The folder containing the executables and DLLs should contain the following |
|
files: |
|
|
|
1. magic.xml |
|
2. delegates.xml |
|
3. modules.xml |
|
4. colors.xml |
|
|
|
among others. |
|
|
|
The bin folder should contains all EXE's and DLL's as well as the very |
|
important modules.xml file. |
|
|
|
With this default setup, you can use any of the command line tools and run |
|
scripts as normal. You can actually get by quite nicely this way by doing |
|
something like pushd e:\xxx\yyy\bin in any scripts you write to execute out |
|
of this directory. |
|
|
|
By default the core of ImageMagick on Win32 always looks in the place were |
|
the exe program is run from in order to find all of the files as well as |
|
the DLL's it needs. |
|
|
|
ENVIRONMENT VARIABLES |
|
|
|
You can use the System control panel to allow you to add and delete what |
|
is in any of the environment variables. You can even have user specific |
|
environment variables if you wish. |
|
|
|
PATH |
|
|
|
This environmental variable sets the default list of places were Windows |
|
looks for EXE's and DLL's. Windows CMD shell seems to look in the current |
|
directory first no matter what, which may make it unnecessary to update the |
|
PATH. If you wish to run any of utilities from another location then you |
|
must add the path to your bin directory in. For instance, to do this for |
|
the default build environment like I do, you might add: |
|
|
|
C:\ImageMagick\VisualMagick\bin |
|
MAGICK_HOME |
|
|
|
If all you do is modify the PATH variable, the first problem you will run into |
|
is that ImageMagick may not be able to find any of its modules. Modules are |
|
all the IM_MOD*.DLL files you see in the distribution. There is one of these |
|
for each and every file format that ImageMagick supports. This environment |
|
variable tells the system were to look for these DLL's. The compiled in |
|
default is execution path - which says - look in the same place that the |
|
application is running in. If you are running from somewhere other then bin |
|
- this will no longer work and you must use this variable. If you elect to |
|
leave the modules in the same place as the EXE's (a good idea) then you can |
|
simply set this to the same place as you did the PATH variable. In my case: |
|
|
|
C:\ImageMagick\coders |
|
|
|
This also the place were ImageMagick expects to find the colors.xml, |
|
delegates.xml, magic.xml, modules.xml, and type.xml files. |
|
|
|
One cool thing about the modules build of ImageMagick is that you can now |
|
leave out file formats and lighten you load. If all you ever need is GIF and |
|
JPEG, then simply drop all the other DLL's into the local trash can and get |
|
on with your life. |
|
|
|
Always keep the XC format, since ImageMagick uses it internally. |
|
|
|
You can elect to changes these things the good old hard-coded way. This |
|
define is applicable in magick-config.h: |
|
|
|
#define MagickConfigurePath "C:\\ImageMagick\\" |
|
|
|
To view any image in a Microsoft window, type |
|
|
|
$magick> convert image.ext win: |
|
|
|
Make sure Ghostscript is installed, otherwise, you will be unable to convert |
|
or view a Postscript document, and Postscript standard fonts will not be |
|
available. |
|
|
|
You may use any standard web browser (e.g. Internet Explorer) to browse the |
|
ImageMagick documentation. |
|
|
|
The Win2K executables will work under Windows 98. |
|
|
|
ImageMagick is now configured and built. You can optionally install it on |
|
your system as discussed below. |
|
|
|
If you are looking to install the ImageMagick COM+ object, see Installing |
|
the ImageMagickObject COM+ Component. |
|
|
|
Install |
|
|
|
You can run ImageMagick command line utilities directly from the |
|
VisualMagick\bin folder, however, in most cases you may want the convenience |
|
of an installer script. ImageMagick provides Inno Setup scripts for this |
|
purpose. Note, you must define MAGICKCORE_INSTALLED_SUPPORT at configure |
|
time to utilize the installer scripts. |
|
|
|
To get started building a self-installing ImageMagick executable, go to |
|
VisualMagick\installer folder and click on a script that matches your build |
|
environment. Press F9 to build and install ImageMagick. The default location |
|
is C:Program Files\ImageMagick-6.?.?\Q?. The exact folder name depends |
|
on the ImageMagick version and quantum depth. Once installed, ImageMagick |
|
command line utilities and libraries are available to the MS Command Prompt, |
|
web scripts, or to meet your development needs. |
|
|
|
Create a Self-Installing Binary Distribution |
|
|
|
Prerequisites |
|
|
|
1. Download and install Inno Setup 5. |
|
2. Download and install ActiveState ActivePerl @ |
|
http://www.activestate.com/activeperl/downloads/. |
|
|
|
Run the Configure Wizard |
|
|
|
1. Double-click on VisualMagick/configure/configure.sln to build the |
|
configure wizard. |
|
2. Select Rebuild All and launch the configure wizard. |
|
3. Uncheck Use X11 Stubs and check Build demo and test programs. |
|
4. Click on Edit magick_config.h and define MAGICKCORE_INSTALLED_SUPPORT. |
|
5. Complete the configure wizard screens to create the ImageMagick Visual |
|
C++ workspace. |
|
|
|
Build ImageMagick |
|
|
|
1. Double-click on VisualMagick/VisualDynamicMT.sln to launch the |
|
ImageMagick Visual workspace. |
|
2. Set the active configuration to Win32 Release. |
|
3. Select Rebuild All to build the ImageMagick binary distribution. |
|
|
|
Build ImageMagickObject |
|
|
|
1. Launch the MS-DOS Command Prompt application and move to the |
|
contrib\win32\ATL7\ImageMagickObject folder. |
|
2. Build ImageMagickObject with these commands: |
|
|
|
$magick> BuildImageMagickObject clean |
|
$magick> BuildImageMagickObject release |
|
|
|
Build PerlMagick |
|
|
|
1. Launch the MS-DOS Command Prompt application and move to the PerlMagick |
|
folder. |
|
2. Build PerlMagick with these commands: |
|
|
|
$magick> perl Makefile.nt |
|
$magick> nmake release |
|
|
|
Create the Self-installing ImageMagick Binary Distribution |
|
|
|
1. Double-click on VisualMagick/installer/im-dll-16.iss to launch the |
|
Inno Setup 5 wizard. |
|
2. Select File->Compile. |
|
|
|
Install the Binary Distribution |
|
|
|
1. Double-click on VisualMagick/bin/ImageMagick-7.0.0-0-Q16-windows-dll.exe |
|
to launch the ImageMagick binary distribution. |
|
2. Complete the installer screens to install ImageMagick on your system. |
|
|
|
Test the Binary Distribution |
|
|
|
1. Launch the MS-DOS Command Prompt application and move to the PerlMagick |
|
folder and type |
|
|
|
$magick> nmake test |
|
|
|
2. Move to the VisualMagick/tests folder and type |
|
|
|
$magick> validate |
|
|
|
3. Move to the VisualMagick/Magick++/tests folder and type |
|
|
|
$magick> run_tests.bat |
|
|
|
4. Move to the VisualMagick/Magick++/demo folder and type |
|
|
|
$magick> run_demos.bat |
|
|
|
If all the tests pass without complaint, the ImageMagick self-install binary |
|
distribution is ready for use. |
|
|
|
Dealing with Unexpected Problems |
|
|
|
Chances are the download, configure, build, and install of ImageMagick went |
|
flawlessly as it is intended, however, certain systems and environments may |
|
cause one or more steps to fail. We discuss a few problems we've run across |
|
and how to take corrective action to ensure you have a working release |
|
of ImageMagick. |
|
|
|
If the compiler generates an error or if it quits unexpectedly, go to the |
|
Visual Studio web site and look for Visual Studio service packs. Chances |
|
are, after you download and install all the Visual Studio service packs, |
|
ImageMagick will compile and build as expected. |
|
|
|
Building Your Custom Project |
|
|
|
The Windows binary distribution includes a number of demo projects that |
|
you can use as a template for your own custom project. For example, |
|
start with the Button project, generally located in the c:/Program |
|
Files/ImageMagick-7.0.0-0/Magick++_demos folder. If not, be sure to select |
|
Configuration Properties->C/C++->Preprocessor and set these definitions: |
|
|
|
NDEBUG |
|
WIN32 |
|
_CONSOLE |
|
_VISUALC_ |
|
NeedFunctionPrototypes |
|
_DLL |
|
_MAGICKMOD_
|
|
|