| 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-6.5.5-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_ |
| |
| |