From: Cristy Date: Thu, 29 Jun 2017 15:24:55 +0000 (-0400) Subject: ... X-Git-Tag: 7.0.6-1~111 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=49380402681e4c168329313ab0a50cfb9f720c9e;p=imagemagick ... --- diff --git a/index.html b/index.html index 40ecd97fc..240991251 100644 --- a/index.html +++ b/index.html @@ -25,14 +25,13 @@ - - - + + + - + -
(adsbygoogle = window.adsbygoogle || []).push({}); -
+

Features and Capabilities • News • Community

-

+

Use ImageMagick® to create, edit, compose, or convert bitmap images. It can read and write images in a variety of formats (over 200) including PNG, JPEG, JPEG-2000, GIF, TIFF, DPX, EXR, WebP, Postscript, PDF, and SVG. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.

The functionality of ImageMagick is typically utilized from the command-line or you can use the features from programs written in your favorite language. Choose from these interfaces: G2F (Ada), MagickCore (C), MagickWand (C), ChMagick (Ch), ImageMagickObject (COM+), Magick++ (C++), JMagick (Java), JuliaIO (Julia), L-Magick (Lisp), Lua (LuaJIT), NMagick (Neko/haXe), Magick.NET (.NET), PascalMagick (Pascal), PerlMagick (Perl), MagickWand for PHP (PHP), IMagick (PHP), PythonMagick (Python), RMagick (Ruby), or TclMagick (Tcl/TK). With a language interface, use ImageMagick to modify or create images dynamically and automagically.

@@ -68,16 +68,16 @@ Use ImageMagickABI. Before each ImageMagick release, we perform a comprehensive security assessment that includes memory error and thread data race detection to help prevent security vulnerabilities.

-

The current release is ImageMagick 7.0.5-10. It runs on Linux, Windows, Mac Os X, iOS, Android OS, and others.

+

The current release is ImageMagick 7.0.6-0. It runs on Linux, Windows, Mac Os X, iOS, Android OS, and others.

The authoritative ImageMagick web site is https://www.imagemagick.org. The authoritative source code repository is http://git.imagemagick.org/repos/ImageMagick. We maintain a source code mirror at GitLab and GitHub.

We continue to maintain the legacy release of ImageMagick, version 6, at https://legacy.imagemagick.org.

-

Features and Capabilities

+

Features and Capabilities

Here are just a few examples of what ImageMagick can do for you:

- +
@@ -209,15 +209,15 @@ Use ImageMagickExamples of ImageMagick Usage shows how to use ImageMagick from the command-line to accomplish any of these tasks and much more. Also, see Fred's ImageMagick Scripts: a plethora of command-line scripts that perform geometric transforms, blurs, sharpens, edging, noise removal, and color manipulations. With Magick.NET, use ImageMagick without having to install ImageMagick on your server or desktop.

+

Examples of ImageMagick Usage shows how to use ImageMagick from the command-line to accomplish any of these tasks and much more. Also, see Fred's ImageMagick Scripts: a plethora of command-line scripts that perform geometric transforms, blurs, sharpens, edging, noise removal, and color manipulations. With Magick.NET, use ImageMagick without having to install ImageMagick on your server or desktop.

-

News

+

News

Now that ImageMagick version 7 is released, we continue to maintain the legacy release of ImageMagick, version 6, at https://legacy.imagemagick.org. Learn how ImageMagick version 7 differs from previous versions with our porting guide.

ImageMagick best practices strongly encourages you to configure a security policy that suits your local environment.

-

Community

+

Community

To join the ImageMagick community, try the discourse server. You can review questions or comments (with informed responses) posed by ImageMagick users or ask your own questions. If you want to contribute image processing algorithms, other enhancements, or bug fixes, open an issue.

@@ -239,4 +239,4 @@ Use ImageMagick - - - + + + - + -
+

Build ImageMagickObject From Source

@@ -65,17 +65,17 @@

ImageMagick provides a statically-built ImageMagick object as part of its Windows installation package. When this package is installed, ImageMagickObject and its sample programs are installed to this path:

-
-  c:\Program Files\ImageMagick-7.0.5-Q16\ImageMagickObject
-
+

+  c:\Program Files\ImageMagick-7.0.6-Q16\ImageMagickObject
+

The ImageMagickObject is registered if the checkbox, Register ImageMagickObject, is checked at install time.

To execute the sample program from the Windows Command Shell, type:

-
+

 cscript SimpleTest.vbs
-
+

Since the ImageMagick utility command line parsers are incorporated within ImageMagickObject, please refer to the command-line tools discussion to learn how to use it. The sample VBS scripts show how the object should be called and used and have lots of comments.

@@ -83,30 +83,30 @@ cscript SimpleTest.vbs

MagickCMD is a C++ sample, but it also serves as a replacement for all the other command line utilities in most applications. Instead of using convert xxxx yyyy you can use MagickCMD convert xxxx yyyy instead. MagickCMD calls the COM object to accomplish the designated task. This small tight combination replaces the entire usual binary distribution in just a few mebibytes.

-

Build ImageMagickObject From Source

+

Build ImageMagickObject From Source

The source code for ImageMagickObject is available from the ImageMagick GIT repository, or as part of the Windows source distribution. Once the source code has been retrieved and extracted, the source for ImageMagickObject is the directory ImageMagick\contrib\win32\ATL7ImageMagickObject, however, ImageMagick itself must be built using the static-multithread (VisualStaticMT) build configuration. Building ImageMagickObject requires Microsoft Visual C++ 7.0 as delivered with Microsoft's Visual Studio .NET package. See the Windows compilation instructions to get ImageMagick itself built before building the ImageMagick COM+ component.

Once the VisualStaticMT project has been built, build the ImageMagickObject with this procedure:

-
+

 cd ImageMagick/contrib/win32/ATL7/ImageMagickObject
 BuildImageMagickObject release
-
+

Here, we assume that the VisualStaticMT project has been built using the release setting for an optimized build. If the debug setting was used for a debug build, specify the argument debug; instead.

To register the DLL as a COM+ server, type

-
+

 regsvr32 /c /s ImageMagickObject.dll
-
+

To unregister the DLL, type

-
+

 regsvr32 /u /s ImageMagickObject.dll
-
+

Use MagickCMD to exercise ImageMagickObject to verify that it is working properly.

@@ -130,4 +130,4 @@ regsvr32 /u /s ImageMagickObject.dll
- \ No newline at end of file + \ No newline at end of file diff --git a/www/advanced-unix-installation.html b/www/advanced-unix-installation.html index 2bc6b51e0..d82a3b2bf 100644 --- a/www/advanced-unix-installation.html +++ b/www/advanced-unix-installation.html @@ -25,14 +25,13 @@ - - - + + + - + -
(adsbygoogle = window.adsbygoogle || []).push({}); -
+

Download & Unpack • Configure • Build • Install • Linux-specific Build Instructions • Mac OS X-specific Build Instructions • MinGW-specific Build Instructions • Dealing with Unexpected Problems

It's possible you don't want to concern yourself with advanced installation under Unix or Linux systems. If so, you also have the option of installing a pre-compiled binary release or if you still want to install from source without all the fuss see the simple Install From Source instructions. However, if you want to customize the configuration and installation of ImageMagick under Unix or Linux systems, lets begin.

-

Download & Unpack

+

Download & Unpack

ImageMagick builds on a variety of Unix and Unix-like operating systems including Linux, Solaris, FreeBSD, Mac OS X, and others. A compiler is required and fortunately almost all modern Unix systems have one. Download ImageMagick.tar.gz from ftp.imagemagick.org or its mirrors and verify the distribution against its message digest.

Unpack the distribution it with this command:

-
+

 tar xvzf ImageMagick.tar.gz
-
+

Now that you have the ImageMagick Unix/Linux source distribution unpacked, let's configure it.

-

Configure

+

Configure

The configure script looks at your environment and decides what it can cobble together to get ImageMagick compiled and installed on your system. This includes finding a compiler, where your compiler header files are located (e.g. stdlib.h), and if any delegate libraries are available for ImageMagick to use (e.g. JPEG, PNG, TIFF, etc.). If you are willing to accept configure's default options, and build from within the source directory, you can simply type:

-
 cd ImageMagick-7.0.5-10 ./configure
+
 cd ImageMagick-7.0.6-0 ./configure

Watch the configure script output to verify that it finds everything that you think it should. Pay particular attention to the last lines of the script output. For example, here is a recent report from our system:

-
ImageMagick is configured as follows. Please verify that this configuration
+
ImageMagick is configured as follows. Please verify that this configuration
 matches your expectations.
 
 Host system type: x86_64-unknown-linux-gnu
@@ -153,32 +153,32 @@ Options used to compile and link:
                     -lSM -lICE -lX11 -lXt -lbz2 -lz -lm -lgomp -lpthread -lltdl
   CXX             = g++
   CXXFLAGS        = -g -O2 -Wall -W -pthread
-
+

You can influence choice of compiler, compilation flags, or libraries of the configure script by setting initial values for variables in the configure command line. These include, among others:

-
-
CC
-
Name of C compiler (e.g. cc -Xa) to use.
-
CXX
-
Name of C++ compiler to use (e.g. CC).
-
CFLAGS
-
Compiler flags (e.g. -g -O2) to compile C code.
-
CXXFLAGS
-
Compiler flags (e.g. -g -O2) to compile C++ code.
-
CPPFLAGS
-
Include paths (.e.g. -I/usr/local) to look for header files.
-
LDFLAGS
-
Library paths (.e.g. -L/usr/local) to look for libraries systems that support the notion of a library run-path may require an additional argument in order to find shared libraries at run time. For example, the Solaris linker requires an argument of the form -R/path. Some Linux systems will work with -rpath /usr/local/lib, while some other Linux systems who's gcc does not pass -rpath to the linker, require an argument of the form -Wl,-rpath,/usr/local/lib.
-
LIBS
-
Extra libraries (.e.g. -l/usr/local/lib) required to link.
+
+
CC
+
Name of C compiler (e.g. cc -Xa) to use.
+
CXX
+
Name of C++ compiler to use (e.g. CC).
+
CFLAGS
+
Compiler flags (e.g. -g -O2) to compile C code.
+
CXXFLAGS
+
Compiler flags (e.g. -g -O2) to compile C++ code.
+
CPPFLAGS
+
Include paths (.e.g. -I/usr/local) to look for header files.
+
LDFLAGS
+
Library paths (.e.g. -L/usr/local) to look for libraries systems that support the notion of a library run-path may require an additional argument in order to find shared libraries at run time. For example, the Solaris linker requires an argument of the form -R/path. Some Linux systems will work with -rpath /usr/local/lib, while some other Linux systems who's gcc does not pass -rpath to the linker, require an argument of the form -Wl,-rpath,/usr/local/lib.
+
LIBS
+
Extra libraries (.e.g. -l/usr/local/lib) required to link.

Here is an example of setting configure variables from the command line:

-
+

 configure CC=c99 CFLAGS=-O2 LDFLAGS='-L/usr/local/lib -R/usr/local/lib' LIBS=-lposix
-
+

Any variable (e.g. CPPFLAGS or LDFLAGS) which requires a directory path must specify an absolute path rather than a relative path.

@@ -191,7 +191,7 @@ configure CC=c99 CFLAGS=-O2 LDFLAGS='-L/usr/local/lib -R/usr/local/lib' LIBS=-lp

Here are the optional features you can configure:

-
Animation create a GIF animation sequence from a group of images.
+
--enable-shared build the shared libraries and support for loading coder and process modules. Shared libraries are preferred because they allow programs to share common code, making the individual programs much smaller. In addition shared libraries are required in order for PerlMagick to be dynamically loaded by an installed PERL (otherwise an additional PERL (PerlMagick) must be installed. @@ -245,7 +245,7 @@ configure CC=c99 CFLAGS=-O2 LDFLAGS='-L/usr/local/lib -R/usr/local/lib' LIBS=-lp

Here are the optional packages you can configure:

- +
+ @@ -427,40 +427,40 @@ Quantum Depth Virtual Memory

ImageMagick is now configured and ready to build

-

Build

+

Build

Once ImageMagick is configured, these standard build targets are available from the generated make files:

-
-
make
-
Build ImageMagick.
-
sudo make install
-
Install ImageMagick.
-
make check
-
Run tests using the installed ImageMagick (sudo make install must be done first). Ghostscript is a prerequisite, otherwise certain unit tests that render text and the EPS, PS, and PDF formats will fail.
-
make clean
-
Remove everything in the build directory created by make.
-
make distclean
-
remove everything in the build directory created by configure and make. This useful if you want to start over from scratch.
-
make uninstall
-
Remove all files from the system which are (or would be) installed by sudo make install using the current configuration. Note that this target is imperfect for PerlMagick since Perl no longer supports an uninstall target.
+
+
make
+
Build ImageMagick.
+
sudo make install
+
Install ImageMagick.
+
make check
+
Run tests using the installed ImageMagick (sudo make install must be done first). Ghostscript is a prerequisite, otherwise certain unit tests that render text and the EPS, PS, and PDF formats will fail.
+
make clean
+
Remove everything in the build directory created by make.
+
make distclean
+
remove everything in the build directory created by configure and make. This useful if you want to start over from scratch.
+
make uninstall
+
Remove all files from the system which are (or would be) installed by sudo make install using the current configuration. Note that this target is imperfect for PerlMagick since Perl no longer supports an uninstall target.

In most cases you will simply wand to compile ImageMagick with this command:

-
+

 make
-
+

Once built, you can optionally install ImageMagick on your system as discussed below.

-

Install

+

Install

Now that ImageMagick is configured and built, type:

-
+

 make install
-
+

to install it.

@@ -468,57 +468,57 @@ make install

To confirm your installation of the ImageMagick distribution was successful, ensure that the installation directory is in your executable search path and type:

-
+

 convert logo: logo.gif
 identify logo.gif
-
+

The ImageMagick logo is displayed on your X11 display.

To verify the ImageMagick build configuration, type:

-
+

 identify -list configure
-
+

To list which image formats are supported , type:

-
+

 identify -list format
-
+

For a more comprehensive test, you run the ImageMagick test suite by typing:

-
+

 make check
-
+

Ghostscript is a prerequisite, otherwise the EPS, PS, and PDF tests will fail. Note that due to differences between the developer's environment and your own it is possible that a few tests may fail even though the results are ok. Differences between the developer's environment environment and your own may include the compiler, the CPU type, and the library versions used. The ImageMagick developers use the current release of all dependent libraries.

-

Linux-specific Build instructions

+

Linux-specific Build instructions

Download ImageMagick.src.rpm from ftp.imagemagick.org or its mirrors and verify the distribution against its message digest.

Build ImageMagick with this command:

-
+

 rpmbuild --rebuild ImageMagick.src.rpm
-
+

After the build you, locate the RPMS folder and install the ImageMagick binary RPM distribution:

-
 rpm -ivh ImageMagick-7.0.5-?.*.rpm
-

Mac OS X-specific Build instructions

+
 rpm -ivh ImageMagick-7.0.6-?.*.rpm
+

Mac OS X-specific Build instructions

Perform these steps as an administrator or with the sudo command:

Install MacPorts. Download and install MacPorts and type the following commands:

-
+

 sudo port -v install freetype +bytecode
 sudo port -v install librsvg
 sudo port -v install graphviz +gs +wmf +jbig +jpeg2 +lcms
-
+

This installs many of the delegate libraries ImageMagick will utilize such as JPEG and FreeType.

@@ -526,48 +526,48 @@ sudo port -v install graphviz +gs +wmf +jbig +jpeg2 +lcms

Install the latest Xcode from Apple.

Use the port command to install any delegate libraries you require, for example:

-
+

 sudo port install jpeg
-
+

Now lets build ImageMagick:

Download the ImageMagick source distribution and verify the distribution against its message digest.

Unpack and change into the top-level ImageMagick directory:

-
 tar xvzf ImageMagick-7.0.5-10.tar.gz cd ImageMagick-7.0.5-10

Configure ImageMagick:

-
+		
 tar xvzf ImageMagick-7.0.6-0.tar.gz cd ImageMagick-7.0.6-0

Configure ImageMagick:

+

 ./configure --prefix=/opt --with-quantum-depth=16 \
   --disable-dependency-tracking --with-x=yes \
   --x-includes=/usr/X11R6/include --x-libraries=/usr/X11R6/lib/ \
   --without-perl"
-
+

Build ImageMagick:

-
+

 make
-
+

Install ImageMagick:

-
+

 sudo make install
-
+

To verify your install, type

-
+

 /opt/local/bin/identify -list font
-
+

to list all the fonts ImageMagick knows about.

To test the ImageMagick GUI, in a new shell, type:

-
+

 display -display :0
-
+
-

MinGW-specific Build instructions

+

MinGW-specific Build instructions

Although you can download and install delegate libraries yourself, many are already available in the GnuWin32 distribution. Download and install whichever delegate libraries you require such as JPEG, PNG, TIFF, etc. Make sure you specify the development headers when you install a package. Next type,

-
 tar jxvf ImageMagick-7.0.5-?.tar.bz2
cd ImageMagick-7.0.5-10
export CPPFLAGS="-Ic:/Progra~1/GnuWin32/include"
export LDFLAGS="-Lc:/Progra~1/GnuWin32/lib"
./configure --without-perl
make
sudo make install
-

Dealing with Unexpected Problems

+
 tar jxvf ImageMagick-7.0.6-?.tar.bz2
cd ImageMagick-7.0.6-0
export CPPFLAGS="-Ic:/Progra~1/GnuWin32/include"
export LDFLAGS="-Lc:/Progra~1/GnuWin32/lib"
./configure --without-perl
make
sudo make install
+

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

@@ -576,40 +576,40 @@ display -display :0

Some systems may fail to link at build time due to unresolved symbols. Try adding the LDFLAGS to the configure command line:

-
+

 configure LDFLAGS='-L/usr/local/lib -R/usr/local/lib'
-
+

Dynamic Linker Run-time Bindings

On some systems, ImageMagick may not find its shared library, libMagick.so. Try running the ldconfig with the library path:

-
+

 /sbin/ldconfig /usr/local/lib
-
+

Solaris and Linux systems have the ldd command which is useful to track which libraries ImageMagick depends on:

-
+

 ldd `which convert`
-
+

Delegate Libraries

On occasion you may receive these warnings:

-
+

 no decode delegate for this image format
 no encode delegate for this image format
-
+

This exception indicates that an external delegate library or its headers were not available when ImageMagick was built. To add support for the image format, download and install the requisite delegate library and its header files and reconfigure, rebuild, and reinstall ImageMagick. As an example, lets add support for the JPEG image format. First we install the JPEG RPMS:

-
+

 yum install libjpeg libjpeg-devel
-
+

Now reconfigure, rebuild, and reinstall ImageMagick. To verify JPEG is now properly supported within ImageMagick, use this command:

-
+

 identify -list format
-
+

You should see a mode of rw- associated with the JPEG tag. This mode means the image can be read or written and can only support one image per image file.

@@ -636,4 +636,4 @@ identify -list format - \ No newline at end of file + \ No newline at end of file diff --git a/www/advanced-windows-installation.html b/www/advanced-windows-installation.html index 4823e28e0..edadae7e3 100644 --- a/www/advanced-windows-installation.html +++ b/www/advanced-windows-installation.html @@ -25,14 +25,13 @@ - - - + + + - + -
(adsbygoogle = window.adsbygoogle || []).push({}); -
+

Download & Unpack • Configure • Build • Install • Create a Self-installing Binary Distribution • Dealing with Unexpected Problems • Building Your Custom Project

It's possible you don't want to concern yourself with advanced installation under Windows. If so, you also have the option of installing a self-installing binary release or if you still want to install from source without all the fuss see the simple Install From Source instructions. However, if you want to customize the configuration and installation of ImageMagick under Windows, lets begin.

-

Download & Unpack

+

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.

@@ -69,14 +69,14 @@

You can unpack the distribution with WinZip or type the following from any Command Prompt window:

-
+

 unzip ImageMagick-windows.zip
-
+

Now that you have the ImageMagick Windows source distribution unpacked, let's configure it.

-

Configure

+

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:

@@ -106,7 +106,7 @@ unzip ImageMagick-windows.zip

Key user defines in magick_config.h include:

-
--with-quantum-depth number of bits in a pixel quantum (default 16). @@ -254,23 +254,23 @@ configure CC=c99 CFLAGS=-O2 LDFLAGS='-L/usr/local/lib -R/usr/local/lib' LIBS=-lp

The number of bits in a quantum determines how many values it may contain. Each quantum level supports 256 times as many values as the previous level. The following table shows the range available for various quantum sizes.

-
+

 Quantum Depth     Valid Range (Decimal)   Valid Range (Hex)
     8             0-255                   00-FF
    16             0-65535                 0000-FFFF
    32             0-4294967295            00000000-FFFFFFFF
-
+


Larger pixel quantums can cause ImageMagick to run more slowly and to require more memory. For example, using sixteen-bit pixel quantums can cause ImageMagick to run 15% to 50% slower (and take twice as much memory) than when it is built to support eight-bit pixel quantums.

The amount of virtual memory consumed by an image can be computed by the equation (5 * Quantum Depth * Rows * Columns) / 8. This an important consideration when resources are limited, particularly since processing an image may require several images to be in memory at one time. The following table shows memory consumption values for a 1024x768 image:

-
+

 Quantum Depth   Virtual Memory
      8               3MB
     16               8MB
     32              15MB
-
+
@@ -125,7 +125,7 @@ unzip ImageMagick-windows.zip

The default build is WIN32. For 64-bit, open a newly created 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. For the 64-bit build, you will also need to disable X11 support. Edit magick-config.h and undefine the MAGICKCORE_X11_DELEGATE define.

-

Build

+

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:

@@ -161,10 +161,10 @@ unzip ImageMagick-windows.zip

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.

@@ -174,27 +174,27 @@ VisualMagick\Magick++\demo\UTIL_demo_xxx_exe.dsp (for C++)

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.

@@ -225,16 +225,16 @@ ImageMagick\VisualMagick\contrib\win32\MFC\NtMagick (project - DSP)

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.

@@ -244,15 +244,15 @@ C:\ImageMagick\coders

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 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.

@@ -264,14 +264,14 @@ magick image.ext win:

If you are looking to install the ImageMagick COM+ object, see Installing the ImageMagickObject COM+ Component.

-

Install

+

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-7.?.?\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

+

Create a Self-Installing Binary Distribution

Prerequisites

@@ -303,10 +303,10 @@ magick image.ext win:
  1. Launch the Command Prompt application and move to the contrib\win32\ATL7\ImageMagickObject folder.
  2. Build ImageMagickObject with these commands: -
    +
    
     BuildImageMagickObject clean
     BuildImageMagickObject release
    -
  3. +

Build PerlMagick

@@ -314,10 +314,10 @@ BuildImageMagickObject release
  1. Launch the Command Prompt application and move to the PerlMagick folder.
  2. Build PerlMagick with these commands: -
    +
    
     perl Makefile.PL
     dmake release
    -
  3. +

Create the Self-installing ImageMagick Binary Distribution

@@ -331,7 +331,7 @@ dmake release
  1. Double-click on - VisualMagick/bin/ImageMagick-7.0.5-10-Q16-windows-dll.exe + VisualMagick/bin/ImageMagick-7.0.6-0-Q16-windows-dll.exe to launch the ImageMagick binary distribution.
  2. Complete the installer screens to install ImageMagick on your system.
@@ -340,38 +340,38 @@ dmake release
  1. Launch the Command Prompt application and move to the PerlMagick folder and type -
    +
    
     nmake test
    -
  2. +
  3. Move to the VisualMagick/tests folder and type -
    +
    
     validate
    -
  4. +
  5. Move to the VisualMagick/Magick++/tests folder and type -
    +
    
     run_tests.bat
    -
  6. +
  7. Move to the VisualMagick/Magick++/demo folder and type -
    +
    
     run_demos.bat
    -
  8. +

If all the tests pass without complaint, the ImageMagick self-install binary distribution is ready for use.

-

Dealing with Unexpected Problems

+

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

+

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.5.5-0/Magick++_demos folder. If not, be sure to select Configuration Properties->C/C++->Preprocessor and set these definitions:

-
+

 NDEBUG
 WIN32
 _CONSOLE
@@ -379,7 +379,7 @@ _VISUALC_
 NeedFunctionPrototypes
 _DLL
 _MAGICKMOD_
-
+
@@ -401,4 +401,4 @@ _MAGICKMOD_ - \ No newline at end of file + \ No newline at end of file diff --git a/www/animate.html b/www/animate.html index 0c6f74bcb..960b15f4e 100644 --- a/www/animate.html +++ b/www/animate.html @@ -25,14 +25,13 @@ - - - + + + - + -
(adsbygoogle = window.adsbygoogle || []).push({}); -
+

Example Usage • Option Summary

Use the animate program to animate an image sequence on any X server. See Command Line Processing for advice on how to structure your animate command or see below for example usages of the command.

-

Example Usage

+

Example Usage

We list a few examples of the animate command here to illustrate its usefulness and ease of use. To get started, lets animate an image sequence in the GIF format:

-
+

 magick animate movie.gif
-
+

To animate a directory of JPEG images, use:

-
+

 magick animate *.jpg
-
+

You can find additional examples of using animate in Examples of ImageMagick Usage.

-

Option Summary

+

Option Summary

The animate command recognizes these options. Click on an option to get more details about how that option works.

-
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.
+
@@ -532,4 +532,4 @@ transparent, extract, background, or shape the alpha channel - \ No newline at end of file + \ No newline at end of file diff --git a/www/architecture.html b/www/architecture.html index bb1cd84db..c9510cd34 100644 --- a/www/architecture.html +++ b/www/architecture.html @@ -25,14 +25,13 @@ - - - + + + - + -
(adsbygoogle = window.adsbygoogle || []).push({}); -
+

The Pixel Cache • Streaming Pixels • Image Properties and Profiles • Large Image Support • Threads of Execution • Heterogeneous Distributed Processing • Custom Image Coders • Custom Image Filters

The citizens of Oz were quite content with their benefactor, the all-powerful Wizard. They accepted his wisdom and benevolence without ever questioning the who, why, and where of his power. Like the citizens of Oz, if you feel comfortable that ImageMagick can help you convert, edit, or compose your images without knowing what goes on behind the curtain, feel free to skip this section. However, if you want to know more about the software and algorithms behind ImageMagick, read on. To fully benefit from this discussion, you should be comfortable with image nomenclature and be familiar with computer programming.

-

Architecture Overview

+

Architecture Overview

An image typically consists of a rectangular region of pixels and metadata. To convert, edit, or compose an image in an efficient manner, we need convenient access to any pixel anywhere within the region (and sometimes outside the region). And in the case of an image sequence, we need access to any pixel of any region of any image in the sequence. However, there are hundreds of image formats such JPEG, TIFF, PNG, GIF, etc., that makes it difficult to access pixels on demand. Within these formats we find differences in:

@@ -101,7 +101,7 @@

ImageMagick consists of nearly a half million lines of C code and optionally depends on several million lines of code in dependent libraries (e.g. JPEG, PNG, TIFF libraries). Given that, one might expect a huge architecture document. However, a great majority of image processing is simply accessing pixels and its metadata and our simple, elegant, and efficient implementation makes this easy for the ImageMagick developer. We discuss the implementation of the pixel cache and getting and setting image properties and profiles in the next few sections. Next, we discuss using ImageMagick within a thread of execution. In the final sections, we discuss image coders to read or write a particular image format followed by a few words on creating a filter to access or update pixels based on your custom requirements.

-

The Pixel Cache

+

The Pixel Cache

The ImageMagick pixel cache is a repository for image pixels with up to 32 channels. The channels are stored contiguously at the depth specified when ImageMagick was built. The channel depths are 8 bits-per-pixel component for the Q8 version of ImageMagick, 16 bits-per-pixel component for the Q16 version, and 32 bits-per-pixel component for the Q32 version. By default pixel components are 32-bit floating-bit high dynamic-range quantities. The channels can hold any value but typically contain red, green, blue, and alpha intensities or cyan, magenta, yellow, alpha intensities. A channel might contain the colormap indexes for colormapped images or the black channel for CMYK images. The pixel cache storage may be heap memory, disk-backed memory mapped, or on disk. The pixel cache is reference-counted. Only the cache properties are copied when the cache is cloned. The cache pixels are subsequently copied only when you signal your intention to update any of the pixels.

@@ -110,32 +110,32 @@

The pixel cache is associated with an image when it is created and it is initialized when you try to get or put pixels. Here are three common methods to associate a pixel cache with an image:

-
Create an image canvas initialized to the background color:

-
image=AllocateImage(image_info);
+
Create an image canvas initialized to the background color:

+
image=AllocateImage(image_info);
 if (SetImageExtent(image,640,480) == MagickFalse)
   { /* an exception was thrown */ }
 (void) QueryMagickColor("red",&image->background_color,&image->exception);
 SetImageBackgroundColor(image);
-
+
-
Create an image from a JPEG image on disk:

-
(void) strcpy(image_info->filename,"image.jpg"):
+
Create an image from a JPEG image on disk:

+
(void) strcpy(image_info->filename,"image.jpg"):
 image=ReadImage(image_info,exception);
 if (image == (Image *) NULL)
   { /* an exception was thrown */ }
-
-
Create an image from a memory based image:

-
image=BlobToImage(blob_info,blob,extent,exception);
+
+
Create an image from a memory based image:

+
image=BlobToImage(blob_info,blob,extent,exception);
 if (image == (Image *) NULL)
   { /* an exception was thrown */ }
-
+

In our discussion of the pixel cache, we use the MagickCore API to illustrate our points, however, the principles are the same for other program interfaces to ImageMagick.

When the pixel cache is initialized, pixels are scaled from whatever bit depth they originated from to that required by the pixel cache. For example, a 1-channel 1-bit monochrome PBM image is scaled to 8-bit gray image, if you are using the Q8 version of ImageMagick, and 16-bit RGBA for the Q16 version. You can determine which version you have with the ‑version option:

-
 identify -version
Version: ImageMagick 7.0.5-10 2017-05-30 Q16 https://www.imagemagick.org
+
 identify -version
Version: ImageMagick 7.0.6-0 2017-06-13 Q16 https://www.imagemagick.org

As you can see, the convenience of the pixel cache sometimes comes with a trade-off in storage (e.g. storing a 1-bit monochrome image as 16-bit is wasteful) and speed (i.e. storing the entire image in memory is generally slower than accessing one scanline of pixels at a time). In most cases, the benefits of the pixel cache typically outweigh any disadvantages.

Access the Pixel Cache

@@ -150,7 +150,7 @@ if (image == (Image *) NULL)

Here is a typical MagickCore code snippet for manipulating pixels in the pixel cache. In our example, we copy pixels from the input image to the output image and decrease the intensity by 10%:

-
const Quantum
+
const Quantum
   *p;
 
 Quantum
@@ -184,13 +184,13 @@ for (y=0; y < (ssize_t) source->rows; y++)
 }
 if (y < (ssize_t) source->rows)
   { /* an exception was thrown */ }
-
+

When we first create the destination image by cloning the source image, the pixel cache pixels are not copied. They are only copied when you signal your intentions to modify or set the pixel cache by calling GetAuthenticPixels() or QueueAuthenticPixels(). Use QueueAuthenticPixels() if you want to set new pixel values rather than update existing ones. You could use GetAuthenticPixels() to set pixel values but it is slightly more efficient to use QueueAuthenticPixels() instead. Finally, use SyncAuthenticPixels() to ensure any updated pixels are pushed to the pixel cache.

You can associate arbitrary content with each pixel, called meta content. Use GetVirtualMetacontent() (to read the content) or GetAuthenticMetacontent() (to update the content) to gain access to this content. For example, to print the metacontent, use:

-
const void
+
const void
   *metacontent;
 
 for (y=0; y < (ssize_t) source->rows; y++)
@@ -203,12 +203,12 @@ for (y=0; y < (ssize_t) source->rows; y++)
 }
 if (y < (ssize_t) source->rows)
   /* an exception was thrown */
-
+

The pixel cache manager decides whether to give you direct or indirect access to the image pixels. In some cases the pixels are staged to an intermediate buffer-- and that is why you must call SyncAuthenticPixels() to ensure this buffer is pushed out to the pixel cache to guarantee the corresponding pixels in the cache are updated. For this reason we recommend that you only read or update a scanline or a few scanlines of pixels at a time. However, you can get any rectangular region of pixels you want. GetAuthenticPixels() requires that the region you request is within the bounds of the image area. For a 640 by 480 image, you can get a scanline of 640 pixels at row 479 but if you ask for a scanline at row 480, an exception is returned (rows are numbered starting at 0). GetVirtualPixels() does not have this constraint. For example,

-
p=GetVirtualPixels(source,-3,-3,source->columns+3,6,exception);
-
+
p=GetVirtualPixels(source,-3,-3,source->columns+3,6,exception);
+

gives you the pixels you asked for without complaint, even though some are not within the confines of the image region.

@@ -217,37 +217,37 @@ if (y < (ssize_t) source->rows)

There are a plethora of image processing algorithms that require a neighborhood of pixels about a pixel of interest. The algorithm typically includes a caveat concerning how to handle pixels around the image boundaries, known as edge pixels. With virtual pixels, you do not need to concern yourself about special edge processing other than choosing which virtual pixel method is most appropriate for your algorithm.

Access to the virtual pixels are controlled by the SetImageVirtualPixelMethod() method from the MagickCore API or the ‑virtual‑pixel option from the command line. The methods include:

-
-
background
-
the area surrounding the image is the background color
-
black
-
the area surrounding the image is black
-
checker-tile
-
alternate squares with image and background color
-
dither
-
non-random 32x32 dithered pattern
-
edge
-
extend the edge pixel toward infinity (default)
-
gray
-
the area surrounding the image is gray
-
horizontal-tile
-
horizontally tile the image, background color above/below
-
horizontal-tile-edge
-
horizontally tile the image and replicate the side edge pixels
-
mirror
-
mirror tile the image
-
random
-
choose a random pixel from the image
-
tile
-
tile the image
-
transparent
-
the area surrounding the image is transparent blackness
-
vertical-tile
-
vertically tile the image, sides are background color
-
vertical-tile-edge
-
vertically tile the image and replicate the side edge pixels
-
white
-
the area surrounding the image is white
+
+
background
+
the area surrounding the image is the background color
+
black
+
the area surrounding the image is black
+
checker-tile
+
alternate squares with image and background color
+
dither
+
non-random 32x32 dithered pattern
+
edge
+
extend the edge pixel toward infinity (default)
+
gray
+
the area surrounding the image is gray
+
horizontal-tile
+
horizontally tile the image, background color above/below
+
horizontal-tile-edge
+
horizontally tile the image and replicate the side edge pixels
+
mirror
+
mirror tile the image
+
random
+
choose a random pixel from the image
+
tile
+
tile the image
+
transparent
+
the area surrounding the image is transparent blackness
+
vertical-tile
+
vertically tile the image, sides are background color
+
vertical-tile-edge
+
vertically tile the image and replicate the side edge pixels
+
white
+
the area surrounding the image is white
@@ -255,32 +255,32 @@ if (y < (ssize_t) source->rows)

Recall that this simple and elegant design of the ImageMagick pixel cache comes at a cost in terms of storage and processing speed. The pixel cache storage requirements scales with the area of the image and the bit depth of the pixel components. For example, if we have a 640 by 480 image and we are using the non-HDRI Q16 version of ImageMagick, the pixel cache consumes image width * height * bit-depth / 8 * channels bytes or approximately 2.3 mebibytes (i.e. 640 * 480 * 2 * 4). Not too bad, but what if your image is 25000 by 25000 pixels? The pixel cache requires approximately 4.7 gibibytes of storage. Ouch. ImageMagick accounts for possible huge storage requirements by caching large images to disk rather than memory. Typically the pixel cache is stored in memory using heap memory. If heap memory is exhausted, we create the pixel cache on disk and attempt to memory-map it. If memory-map memory is exhausted, we simply use standard disk I/O. Disk storage is cheap but it is also very slow, upwards of 1000 times slower than memory. We can get some speed improvements, up to 5 times, if we use memory mapping to the disk-based cache. These decisions about storage are made automagically by the pixel cache manager negotiating with the operating system. However, you can influence how the pixel cache manager allocates the pixel cache with cache resource limits. The limits include:

-
-
width
-
maximum width of an image. Exceed this limit and an exception is thrown and processing stops.
-
height
-
maximum height of an image. Exceed this limit and an exception is thrown and processing stops.
-
area
-
maximum area in bytes of any one image that can reside in the pixel cache memory. If this limit is exceeded, the image is automagically cached to disk and optionally memory-mapped.
-
memory
-
maximum amount of memory in bytes to allocate for the pixel cache from the heap.
-
map
-
maximum amount of memory map in bytes to allocate for the pixel cache.
-
disk
-
maximum amount of disk space in bytes permitted for use by the pixel cache. If this limit is exceeded, the pixel cache is not created and a fatal exception is thrown.
-
files
-
maximum number of open pixel cache files. When this limit is exceeded, any subsequent pixels cached to disk are closed and reopened on demand. This behavior permits a large number of images to be accessed simultaneously on disk, but without a speed penalty due to repeated open/close calls.
-
thread
-
maximum number of threads that are permitted to run in parallel.
-
time
-
maximum number of seconds that the process is permitted to execute. Exceed this limit and an exception is thrown and processing stops.
+
+
width
+
maximum width of an image. Exceed this limit and an exception is thrown and processing stops.
+
height
+
maximum height of an image. Exceed this limit and an exception is thrown and processing stops.
+
area
+
maximum area in bytes of any one image that can reside in the pixel cache memory. If this limit is exceeded, the image is automagically cached to disk and optionally memory-mapped.
+
memory
+
maximum amount of memory in bytes to allocate for the pixel cache from the heap.
+
map
+
maximum amount of memory map in bytes to allocate for the pixel cache.
+
disk
+
maximum amount of disk space in bytes permitted for use by the pixel cache. If this limit is exceeded, the pixel cache is not created and a fatal exception is thrown.
+
files
+
maximum number of open pixel cache files. When this limit is exceeded, any subsequent pixels cached to disk are closed and reopened on demand. This behavior permits a large number of images to be accessed simultaneously on disk, but without a speed penalty due to repeated open/close calls.
+
thread
+
maximum number of threads that are permitted to run in parallel.
+
time
+
maximum number of seconds that the process is permitted to execute. Exceed this limit and an exception is thrown and processing stops.

Note, these limits pertain to the ImageMagick pixel cache. Certain algorithms within ImageMagick do not respect these limits nor does any of the external delegate libraries (e.g. JPEG, TIFF, etc.).

To determine the current setting of these limits, use this command:

-
+

 -> identify -list resource
 Resource limits:
   Width: 100MP
@@ -293,10 +293,10 @@ Resource limits:
   Thread: 12
   Throttle: 0
   Time: unlimited
-
+

You can set these limits either as a security policy (see policy.xml), with an environment variable, with the -limit command line option, or with the SetMagickResourceLimit() MagickCore API method. As an example, our online web interface to ImageMagick, ImageMagick Studio, includes these policy limits to help prevent a denial-of-service:

-
+

 <policymap>
   <policy domain="resource" name="temporary-path" value="/tmp"/>
   <policy domain="resource" name="memory" value="256MiB"/>
@@ -314,13 +314,13 @@ Resource limits:
   <policy domain="delegate" rights="none" pattern="HTTPS" />
   <policy domain="path" rights="none" pattern="@*"/>  <!-- indirect reads not permitted -->
 </policymap>
-
+

Since we process multiple simultaneous sessions, we don't want any one session consuming all the available memory.With this policy, large images are cached to disk. If the image is too large and exceeds the pixel cache disk limit, the program exits. In addition, we place a time limit to prevent any run-away processing tasks. If any one image has a width or height that exceeds 8192 pixels, an exception is thrown and processing stops. As of ImageMagick 7.0.1-8 you can prevent the use of any delegate or all delegates (set the pattern to "*"). Note, prior to this release, use a domain of "coder" to prevent delegate usage (e.g. domain="coder" rights="none" pattern="HTTPS"). The policy also prevents indirect reads. If you want to, for example, read text from a file (e.g. caption:@myCaption.txt), you'll need to remove this policy.

Note, the cache limits are global to each invocation of ImageMagick, meaning if you create several images, the combined resource requirements are compared to the limit to determine the pixel cache storage disposition.

To determine which type and how much resources are consumed by the pixel cache, add the -debug cache option to the command-line:

-
-> convert -debug cache logo: -sharpen 3x2 null:
+
-> convert -debug cache logo: -sharpen 3x2 null:
 2016-12-17T13:33:42-05:00 0:00.000 0.000u 7.0.0 Cache convert: cache.c/DestroyPixelCache/1275/Cache
   destroy 
 2016-12-17T13:33:42-05:00 0:00.000 0.000u 7.0.0 Cache convert: cache.c/OpenPixelCache/3834/Cache
@@ -337,22 +337,22 @@ Resource limits:
   destroy LOGO[0]
 2016-12-17T13:33:42-05:00 0:00.050 0.100u 7.0.0 Cache convert: cache.c/DestroyPixelCache/1275/Cache
   destroy LOGO[0]
-
+

This command utilizes a pixel cache in memory. The logo consumed 4.688MiB and after it was sharpened, 3.516MiB.

Distributed Pixel Cache

A distributed pixel cache is an extension of the traditional pixel cache available on a single host. The distributed pixel cache may span multiple servers so that it can grow in size and transactional capacity to support very large images. Start up the pixel cache server on one or more machines. When you read or operate on an image and the local pixel cache resources are exhausted, ImageMagick contacts one or more of these remote pixel servers to store or retrieve pixels. The distributed pixel cache relies on network bandwidth to marshal pixels to and from the remote server. As such, it will likely be significantly slower than a pixel cache utilizing local storage (e.g. memory, disk, etc.).

-
+

 convert -distribute-cache 6668 &  // start on 192.168.100.50
 convert -define registry:cache:hosts=192.168.100.50:6668 myimage.jpg -sharpen 5x2 mimage.png
-
+

Cache Views

GetVirtualPixels(), GetAuthenticPixels(), QueueAuthenticPixels(), and SyncAuthenticPixels(), from the MagickCore API, can only deal with one pixel cache area per image at a time. Suppose you want to access the first and last scanline from the same image at the same time? The solution is to use a cache view. A cache view permits you to access as many areas simultaneously in the pixel cache as you require. The cache view methods are analogous to the previous methods except you must first open a view and close it when you are finished with it. Here is a snippet of MagickCore code that permits us to access the first and last pixel row of the image simultaneously:

-
CacheView
+
CacheView
   *view_1,
   *view_2;
 
@@ -373,7 +373,7 @@ view_2=DestroyCacheView(view_2);
 view_1=DestroyCacheView(view_1);
 if (y < (ssize_t) source->rows)
   { /* an exception was thrown */ }
-
+

Magick Persistent Cache Format

@@ -402,30 +402,30 @@ if (y < (ssize_t) source->rows)

If you are dealing with large images, make sure the pixel cache is written to a disk area with plenty of free space. Under Unix, this is typically /tmp and for Windows, c:/temp. You can tell ImageMagick to write the pixel cache to an alternate location and conserve memory with these options:

-
+

 convert -limit memory 2GB -limit map 4GB -define registry:temporary-path=/data/tmp ...
-
+

Set global resource limits for your environment in the policy.xml configuration file.

If you plan on processing the same image many times, consider the MPC format. Reading a MPC image has near-zero overhead because its in the native pixel cache format eliminating the need for decoding the image pixels. Here is an example:

-
+

 convert image.tif image.mpc
 convert image.mpc -crop 100x100+0+0 +repage 1.png
 convert image.mpc -crop 100x100+100+0 +repage 2.png
 convert image.mpc -crop 100x100+200+0 +repage 3.png
-
+

MPC is ideal for web sites. It reduces the overhead of reading and writing an image. We use it exclusively at our online image studio.

-

Streaming Pixels

+

Streaming Pixels

ImageMagick provides for streaming pixels as they are read from or written to an image. This has several advantages over the pixel cache. The time and resources consumed by the pixel cache scale with the area of an image, whereas the pixel stream resources scale with the width of an image. The disadvantage is the pixels must be consumed as they are streamed so there is no persistence.

Use ReadStream() or WriteStream() with an appropriate callback method in your MagickCore program to consume the pixels as they are streaming. Here's an abbreviated example of using ReadStream:

-
static size_t StreamPixels(const Image *image,const void *pixels,const size_t columns)
+
static size_t StreamPixels(const Image *image,const void *pixels,const size_t columns)
 {
   register const Quantum
     *p;
@@ -447,33 +447,33 @@ convert image.mpc -crop 100x100+200+0 +repage 3.png
 /* invoke the pixel stream here */
 image_info->client_data=(void *) MyData;
 image=ReadStream(image_info,&StreamPixels,exception);
-
+

We also provide a lightweight tool, stream, to stream one or more pixel components of the image or portion of the image to your choice of storage formats. It writes the pixel components as they are read from the input image a row at a time making stream desirable when working with large images or when you require raw pixel components. A majority of the image formats stream pixels (red, green, and blue) from left to right and top to bottom. However, a few formats do not support this common ordering (e.g. the PSD format).

-

Image Properties and Profiles

+

Image Properties and Profiles

Images have metadata associated with them in the form of properties (e.g. width, height, description, etc.) and profiles (e.g. EXIF, IPTC, color management). ImageMagick provides convenient methods to get, set, or update image properties and get, set, update, or apply profiles. Some of the more popular image properties are associated with the Image structure in the MagickCore API. For example:

-
(void) printf("image width: %lu, height: %lu\n",image->columns,image->rows);
-
+
(void) printf("image width: %lu, height: %lu\n",image->columns,image->rows);
+

For a great majority of image properties, such as an image comment or description, we use the GetImageProperty() and SetImageProperty() methods. Here we set a property and fetch it right back:

-
const char
+
const char
   *comment;
 
 (void) SetImageProperty(image,"comment","This space for rent");
 comment=GetImageProperty(image,"comment");
 if (comment == (const char *) NULL)
   (void) printf("Image comment: %s\n",comment);
-
+

ImageMagick supports artifacts with the GetImageArtifact() and SetImageArtifact() methods. Artifacts are stealth properties that are not exported to image formats (e.g. PNG).

Image profiles are handled with GetImageProfile(), SetImageProfile(), and ProfileImage() methods. Here we set a profile and fetch it right back:

-
StringInfo
+
StringInfo
   *profile;
 
 profile=AcquireStringInfo(length);
@@ -483,57 +483,57 @@ DestroyStringInfo(profile);
 profile=GetImageProfile(image,"EXIF");
 if (profile != (StringInfo *) NULL)
   (void) PrintStringInfo(stdout,"EXIF",profile);
-
+
-

Large Image Support

+

Large Image Support

ImageMagick can read, process, or write mega-, giga-, or tera-pixel image sizes. An image width or height can range from 1 to 2 giga-pixels on a 32 bit OS and up to 9 exa-pixels on a 64-bit OS. Note, that some image formats have restrictions on image size. For example, Photoshop images are limited to 300,000 pixels for width or height. Here we resize an image to a quarter million pixels square:

-
+

 convert logo: -resize 250000x250000 logo.miff
-
+

For large images, ImageMagick will likely create a pixel cache on disk. Make sure you have plenty of temporary disk space. If your default temporary disk partition is too small, tell ImageMagick to use another partition with plenty of free space. For example:

-
+

 convert -define registry:temporary-path=/data/tmp logo:  \ 
-resize 250000x250000 logo.miff -
+

To ensure large images do not consume all the memory on your system, force the image pixels to memory-mapped disk with resource limits:

-
+

 convert -define registry:temporary-path=/data/tmp -limit memory 16mb \
   logo: -resize 250000x250000 logo.miff
-
+

Here we force all image pixels to disk:

-
+

 convert -define registry:temporary-path=/data/tmp -limit area 0 \
   logo: -resize 250000x250000 logo.miff
-
+

Caching pixels to disk is about 1000 times slower than memory. Expect long run times when processing large images on disk with ImageMagick. You can monitor progress with this command:

-
convert -monitor -limit memory 2GiB -limit map 4GiB -define registry:temporary-path=/data/tmp \
+
convert -monitor -limit memory 2GiB -limit map 4GiB -define registry:temporary-path=/data/tmp \
   logo: -resize 250000x250000 logo.miff
-
+

For really large images, or if there is limited resources on your host, you can utilize a distributed pixel cache on one or more remote hosts:

-
+

 convert -distribute-cache 6668 &  // start on 192.168.100.50
 convert -distribute-cache 6668 &  // start on 192.168.100.51
 convert -limit memory 2mb -limit map 2mb -limit disk 2gb \
   -define registry:cache:hosts=192.168.100.50:6668,192.168.100.51:6668 \
   myhugeimage.jpg -sharpen 5x2 myhugeimage.png
-
+
-

Threads of Execution

+

Threads of Execution

Many of ImageMagick's internal algorithms are threaded to take advantage of speed-ups offered by the multicore processor chips. However, you are welcome to use ImageMagick algorithms in your threads of execution with the exception of the MagickCore's GetVirtualPixels(), GetAuthenticPixels(), QueueAuthenticPixels(), or SyncAuthenticPixels() pixel cache methods. These methods are intended for one thread of execution only with the exception of an OpenMP parallel section. To access the pixel cache with more than one thread of execution, use a cache view. We do this for the CompositeImage() method, for example. Suppose we want to composite a single image over a different image in each thread of execution. If we use GetVirtualPixels(), the results are unpredictable because multiple threads would likely be asking for different areas of the pixel cache simultaneously. Instead we use GetCacheViewVirtualPixels() which creates a unique view for each thread of execution ensuring our program behaves properly regardless of how many threads are invoked. The other program interfaces, such as the MagickWand API, are completely thread safe so there are no special precautions for threads of execution.

Here is an MagickCore code snippet that takes advantage of threads of execution with the OpenMP programming paradigm:

-
CacheView
+
CacheView
   *image_view;
 
 MagickBooleanType
@@ -581,11 +581,11 @@ for (y=0; y < (ssize_t) image->rows; y++)
 image_view=DestroyCacheView(image_view);
 if (status == MagickFalse)
   perror("something went wrong");
-
+

This code snippet converts an uncompressed Windows bitmap to a Magick++ image:

-
#include "Magick++.h"
+
#include "Magick++.h"
 #include <assert.h>
 #include "omp.h"
 
@@ -639,7 +639,7 @@ void ConvertBMPToImage(const BITMAPINFOHEADER *bmp_info,
     image->syncPixels();  // sync pixels to pixel cache.
   }
   return;
-}
+}

If you call the ImageMagick API from your OpenMP-enabled application and you intend to dynamically increase the number of threads available in subsequent parallel regions, be sure to perform the increase before you call the API otherwise ImageMagick may fault.

@@ -647,21 +647,21 @@ void ConvertBMPToImage(const BITMAPINFOHEADER *bmp_info,

In most circumstances, the default number of threads is set to the number of processor cores on your system for optimal performance. However, if your system is hyperthreaded or if you are running on a virtual host and only a subset of the processors are available to your server instance, you might get an increase in performance by setting the thread policy or the MAGICK_THREAD_LIMIT environment variable. For example, your virtual host has 8 processors but only 2 are assigned to your server instance. The default of 8 threads can cause severe performance problems. One solution is to limit the number of threads to the available processors in your policy.xml configuration file:

-
+

 <policy domain="resource" name="thread" value="2"/>
-
+

Or suppose your 12 core hyperthreaded computer defaults to 24 threads. Set the MAGICK_THREAD_LIMIT environment variable and you will likely get improved performance:

-
+

 export MAGICK_THREAD_LIMIT=12
-
+

The OpenMP committee has not defined the behavior of mixing OpenMP with other threading models such as Posix threads. However, using modern releases of Linux, OpenMP and Posix threads appear to interoperate without complaint. If you want to use Posix threads from a program module that calls one of the ImageMagick application programming interfaces (e.g. MagickCore, MagickWand, Magick++, etc.) from Mac OS X or an older Linux release, you may need to disable OpenMP support within ImageMagick. Add the --disable-openmp option to the configure script command line and rebuild and reinstall ImageMagick.

Threading Performance

It can be difficult to predict behavior in a parallel environment. Performance might depend on a number of factors including the compiler, the version of the OpenMP library, the processor type, the number of cores, the amount of memory, whether hyperthreading is enabled, the mix of applications that are executing concurrently with ImageMagick, or the particular image-processing algorithm you utilize. The only way to be certain of optimal performance, in terms of the number of threads, is to benchmark. ImageMagick includes progressive threading when benchmarking a command and returns the elapsed time and efficiency for one or more threads. This can help you identify how many threads is the most efficient in your environment. For this benchmark we sharpen a 1920x1080 image of a model 10 times with 1 to 12 threads:

-
+

 -> convert -bench 10 model.png -sharpen 5x2 null:
 Performance[1]: 10i 1.135ips 1.000e 8.760u 0:08.810
 Performance[2]: 10i 2.020ips 0.640e 9.190u 0:04.950
@@ -675,31 +675,31 @@ Performance[9]: 10i 4.484ips 0.798e 12.860u 0:02.230
 Performance[10]: 10i 4.274ips 0.790e 14.830u 0:02.340
 Performance[11]: 10i 4.348ips 0.793e 16.500u 0:02.300
 Performance[12]: 10i 4.525ips 0.799e 18.320u 0:02.210
-
+

The sweet spot for this example is 6 threads. This makes sense since there are 6 physical cores. The other 6 are hyperthreads. It appears that sharpening does not benefit from hyperthreading.

In certain cases, it might be optimal to set the number of threads to 1 or to disable OpenMP completely with the MAGICK_THREAD_LIMIT environment variable, -limit command line option, or the policy.xml configuration file.

-

Heterogeneous Distributed Processing

+

Heterogeneous Distributed Processing

ImageMagick includes support for heterogeneous distributed processing with the OpenCL framework. OpenCL kernels within ImageMagick permit image processing algorithms to execute across heterogeneous platforms consisting of CPUs, GPUs, and other processors. Depending on your platform, speed-ups can be an order of magnitude faster than the traditional single CPU.

First verify that your version of ImageMagick includes support for the OpenCL feature:

-
+

 identify -version
 Features: DPC Cipher Modules OpenCL OpenMP
-
+

If so, run this command to realize a significant speed-up for image convolution:

-
+

 convert image.png -convolve '-1, -1, -1, -1, 9, -1, -1, -1, -1' convolve.png
-
+

If an accelerator is not available or if the accelerator fails to respond, ImageMagick reverts to the non-accelerated convolution algorithm.

Here is an example OpenCL kernel that convolves an image:

-
static inline long ClampToCanvas(const long offset,const ulong range)
+
static inline long ClampToCanvas(const long offset,const ulong range)
 {
   if (offset < 0L)
     return(0L);
@@ -755,19 +755,19 @@ __kernel void Convolve(const __global CLPixelType *source,__constant float *filt
   destination[index].y=ClampToQuantum(gamma*sum.y);
   destination[index].z=ClampToQuantum(gamma*sum.z);
   destination[index].w=ClampToQuantum(sum.w);
-};
+};

See magick/accelerate.c for a complete implementation of image convolution with an OpenCL kernel.

Note, that under Windows, you might have an issue with TDR (Timeout Detection and Recovery of GPUs). Its purpose is to detect runaway tasks hanging the GPU by using an execution time threshold. For some older low-end GPUs running the OpenCL filters in ImageMagick, longer execution times might trigger the TDR mechanism and pre-empt the GPU image filter. When this happens, ImageMagick automatically falls back to the CPU code path and returns the expected results. To avoid pre-emption, increase the TdrDelay registry key.

-

Custom Image Coders

+

Custom Image Coders

An image coder (i.e. encoder / decoder) is responsible for registering, optionally classifying, optionally reading, optionally writing, and unregistering one image format (e.g. PNG, GIF, JPEG, etc.). Registering an image coder alerts ImageMagick a particular format is available to read or write. While unregistering tells ImageMagick the format is no longer available. The classifying method looks at the first few bytes of an image and determines if the image is in the expected format. The reader sets the image size, colorspace, and other properties and loads the pixel cache with the pixels. The reader returns a single image or an image sequence (if the format supports multiple images per file), or if an error occurs, an exception and a null image. The writer does the reverse. It takes the image properties and unloads the pixel cache and writes them as required by the image format.

Here is a listing of a sample custom coder. It reads and writes images in the MGK image format which is simply an ID followed by the image width and height followed by the RGB pixel values.

-
/*
+
/*
   Include declarations.
 */
 #include "magick/studio.h"
@@ -1167,23 +1167,23 @@ static MagickBooleanType WriteMGKImage(const ImageInfo *image_info,Image *image)
   } while (image_info->adjoin != MagickFalse);
   (void) CloseBlob(image);
   return(MagickTrue);
-}
+}

To invoke the custom coder from the command line, use these commands:

-
convert logo: logo.mgk
+
convert logo: logo.mgk
 display logo.mgk
-
+

We provide the Magick Coder Kit to help you get started writing your own custom coder.

-

Custom Image Filters

+

Custom Image Filters

ImageMagick provides a convenient mechanism for adding your own custom image processing algorithms. We call these image filters and they are invoked from the command line with the -process option or from the MagickCore API method ExecuteModuleProcess().

Here is a listing of a sample custom image filter. It computes a few statistics such as the pixel brightness and saturation mean and standard-deviation.

-
#include <stdio.h>
+
#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <time.h>
@@ -1380,11 +1380,11 @@ ModuleExport size_t analyzeImage(Image **images,const int argc,const char **argv
     (void) SetImageProperty(image,"filter:saturation:skewness",text);
   }
   return(MagickImageFilterSignature);
-}
+}

To invoke the custom filter from the command line, use this command:

-
convert logo: -process \"analyze\" -verbose info:
+
convert logo: -process \"analyze\" -verbose info:
   Image: logo:
     Format: LOGO (ImageMagick Logo)
     Class: PseudoClass
@@ -1398,7 +1398,7 @@ ModuleExport size_t analyzeImage(Image **images,const int argc,const char **argv
     filter:saturation:mean: 5951.55
     filter:saturation:skewness: 2.42848
     filter:saturation:standard-deviation: 15575.9
-
+

We provide the Magick Filter Kit to help you get started writing your own custom image filter.

@@ -1423,4 +1423,4 @@ ModuleExport size_t analyzeImage(Image **images,const int argc,const char **argv
- \ No newline at end of file + \ No newline at end of file diff --git a/www/changelog.html b/www/changelog.html index bb70eaa2d..2708e3e3f 100644 --- a/www/changelog.html +++ b/www/changelog.html @@ -25,14 +25,13 @@ - - - + + + - + -
(adsbygoogle = window.adsbygoogle || []).push({}); -
-
2017-06-02 7.0.5-10 Cristy <quetzlzacatenango@image...>
+
+
2017-06-10 7.0.6-0 Cristy <quetzlzacatenango@image...>
+
  • Release ImageMagick version 7.0.6-0, GIT revision 20194:b0c0d00:20170611.
  • +
    2017-06-10 7.0.6-1 Glenn Randers-Pehrson <glennrp@image...>
    +
  • coders/png.c: Accept exIf chunks whose data segment erroneously begins with "Exif\0\0".
  • +
    2017-06-10 7.0.6-0 Cristy <quetzlzacatenango@image...>
    +
  • Introduce SetMagickSecurityPolicy() (MagickCore) and MagickSetSecurityPolicy() (MagickWand) to set the ImageMagick security policy (reference https://github.com/ImageMagick/ImageMagick/issues/407).
  • +
    2017-06-02 7.0.5-10 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.5-10, GIT revision 20155:38ebc02:20170602.
  • -
    2017-06-01 7.0.5-10 Glenn Randers-Pehrson <glennrp@image...>
    -
  • Removed experimental zxIF chunk support; the proposal is dead.
  • -
    2017-06-01 7.0.5-10 Cristy <quetzlzacatenango@image...>
    +
    2017-06-01 7.0.5-10 Glenn Randers-Pehrson <glennrp@image...>
    +
  • Removed experimental PNG zxIF chunk support; the proposal is dead.
  • +
    2017-06-01 7.0.5-10 Cristy <quetzlzacatenango@image...>
  • Fix choppy bitmap font rendering (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=32071).
  • The +opaque option is not longer a noop (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=32081).
  • Add support for 'hex:' property.
  • -
    2017-05-28 7.0.5-9 Cristy <quetzlzacatenango@image...>
    +
    2017-05-28 7.0.5-9 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.5-9, GIT revision 20113:8b67333:20170528.
  • -
    2017-05-28 7.0.5-9 Cristy <quetzlzacatenango@image...>
    +
    2017-05-28 7.0.5-9 Cristy <quetzlzacatenango@image...>
  • Transient error validating the JPEG-2000 image format (reference https://github.com/ImageMagick/ImageMagick/issues/501).
  • Properly allocate DCM image colormap (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=32063).
  • -
    2017-05-26 7.0.5-8 Cristy <quetzlzacatenango@image...>
    +
    2017-05-26 7.0.5-8 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.5-8, GIT revision 20099:870a016:20170526.
  • -
    2017-05-23 7.0.5-8 Cristy <quetzlzacatenango@image...>
    +
    2017-05-23 7.0.5-8 Cristy <quetzlzacatenango@image...>
  • Improper allocation of memory for IM instances without threads (reference https://github.com/ImageMagick/ImageMagick/issues/497).
  • Delete corrupt image from list (reference https://github.com/ImageMagick/ImageMagick/issues/500).
  • -
    2017-05-19 7.0.5-7 Cristy <quetzlzacatenango@image...>
    +
    2017-05-19 7.0.5-7 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.5-6, GIT revision 20078:7ce2d38:20170519.
  • -
    2017-05-15 7.0.5-7 Cristy <quetzlzacatenango@image...>
    +
    2017-05-15 7.0.5-7 Cristy <quetzlzacatenango@image...>
  • Support various image operators for the compare utility (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=2&t=31938).
  • 2017-05-12 7.0.5-6 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.5-6, GIT revision 20039:9371904:20170512.
  • -
    2017-05-10 7.0.5-6 John Cupitt <jcupitt@gmail.com>
    +
    2017-05-10 7.0.5-6 John Cupitt <jcupitt@gmail.com>
  • Revise DICOM window and rescale handling (reference https://github.com/ImageMagick/ImageMagick/pull/484)
  • -
    2017-05-06 7.0.5-6 Cristy <quetzlzacatenango@image...>
    +
    2017-05-06 7.0.5-6 Cristy <quetzlzacatenango@image...>
  • Restore the -alpha Shape option (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31879).
  • Fix transient PDF bug (reference https://github.com/ImageMagick/ImageMagick/issues/463).
  • The +opaque option now works on all channels (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31862).
  • Ensure backwards compatibility for the -combine option (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31855).
  • Check for EOF conditions for RLE image format.
  • Reset histogram page geometry (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31920).
  • -
    2017-04-24 7.0.5-5 Cristy <quetzlzacatenango@image...>
    +
    2017-04-24 7.0.5-5 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.5-5, GIT revision 19915:12eec43:20170424.
  • -
    2017-03-26 7.0.5-5 Cristy <quetzlzacatenango@image...>
    +
    2017-03-26 7.0.5-5 Cristy <quetzlzacatenango@image...>
  • Minimize buffer copies to improve OpenCL performance.
  • Morphology thinning is no longer a no-op (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31650).
  • Patch two PCD writer problems, corrupt output and dark pixels (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=3164).
  • Support ICC based PDF's (reference https://github.com/ImageMagick/ImageMagick/issues/417).
  • Fix improper EPS clip path rendering (reference http://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31722).
  • -
    2017-03-24 7.0.5-4 Cristy <quetzlzacatenango@image...>
    +
    2017-03-24 7.0.5-4 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.5-4, GIT revision 19754:350fff3:20170324.
  • -
    2017-03-21 7.0.5-4 Cristy <quetzlzacatenango@image...>
    +
    2017-03-21 7.0.5-4 Cristy <quetzlzacatenango@image...>
  • Respect -loop option for animate -window (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31619).
  • -
    2017-03-17 7.0.5-3 Cristy <quetzlzacatenango@image...>
    +
    2017-03-17 7.0.5-3 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.5-3, GIT revision 19741:070c3fb:20170317.
  • -
    2017-03-14 7.0.5-3 Cristy <quetzlzacatenango@image...>
    +
    2017-03-14 7.0.5-3 Cristy <quetzlzacatenango@image...>
  • Support namespaces for the security policy.
  • Support the -authenticate option for PDF (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31530).
  • -
    2017-03-11 7.0.5-2 Cristy <quetzlzacatenango@image...>
    +
    2017-03-11 7.0.5-2 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.5-2, GIT revision 19696:da91a7c:20170311.
  • -
    2017-03-06 7.0.5-2 Cristy <quetzlzacatenango@image...>
    +
    2017-03-06 7.0.5-2 Cristy <quetzlzacatenango@image...>
  • Respect throttle policy (reference https://github.com/ImageMagick/ImageMagick/issues/393).
  • Return proper minima / maxima (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31377).
  • -
    2017-03-03 7.0.5-1 Cristy <quetzlzacatenango@image...>
    +
    2017-03-03 7.0.5-1 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.5-1, GIT revision 19662:b7f455a:20170303.
  • -
    2017-02-21 7.0.5-1 Cristy <quetzlzacatenango@image...>
    +
    2017-02-21 7.0.5-1 Cristy <quetzlzacatenango@image...>
  • Fix Spurious memory allocation message (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31438).
  • Identical images should return inf for PSNR (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31487).
  • -
    2017-02-20 7.0.5-0 Cristy <quetzlzacatenango@image...>
    +
    2017-02-20 7.0.5-0 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.5-0, GIT revision 19616:505fea9:20170220.
  • -
    2017-02-20 7.0.5-0 Cristy <quetzlzacatenango@image...>
    +
    2017-02-20 7.0.5-0 Cristy <quetzlzacatenango@image...>
  • Fix transient bug with -separate option (reference https://github.com/ImageMagick/ImageMagick/issues/385).
  • -
    2017-02-18 7.0.4-10 Cristy <quetzlzacatenango@image...>
    +
    2017-02-18 7.0.4-10 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.4-10, GIT revision 19608:fe757a2:20170218.
  • -
    2017-02-18 7.0.4-10 Dirk Lemstra <dirk@lem.....org>
    +
    2017-02-18 7.0.4-10 Dirk Lemstra <dirk@lem.....org>
  • Fixed fd leak for webp coder (reference https://github.com/ImageMagick/ImageMagick/pull/382)
  • -
    2017-02-15 7.0.4-10 Cristy <quetzlzacatenango@image...>
    +
    2017-02-15 7.0.4-10 Cristy <quetzlzacatenango@image...>
  • Prevent random pixel data for corrupt JPEG image (bug report from Hirokazu Moriguchi, Sony).
  • Restore -mattecolor option.
  • Support pixel-cache and shred security policies.
  • Bump Magick++ SO. Previously a global replace changed matteColor to alphaColor.
  • -
    2017-02-14 7.0.4-9 Cristy <quetzlzacatenango@image...>
    +
    2017-02-14 7.0.4-9 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.4-9, GIT revision 19580:d474b37:20170214.
  • -
    2017-02-14 7.0.4-9 Cristy <quetzlzacatenango@image...>
    +
    2017-02-14 7.0.4-9 Cristy <quetzlzacatenango@image...>
  • Revert patch that did not set update trait on alpha channel.
  • -
    2017-02-13 7.0.4-8 Cristy <quetzlzacatenango@image...>
    +
    2017-02-13 7.0.4-8 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.4-8, GIT revision 19574:7642384:20170213.
  • -
    2017-02-09 7.0.4-8 Dirk Lemstra <dirk@lem.....org>
    +
    2017-02-09 7.0.4-8 Dirk Lemstra <dirk@lem.....org>
  • Fixed memory leak when creating nested exceptions in Magick++ (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=23&p=142634)
  • -
    2017-02-09 7.0.4-8 Cristy <quetzlzacatenango@image...>
    +
    2017-02-09 7.0.4-8 Cristy <quetzlzacatenango@image...>
  • Unbreak build without JPEG support (reference https://github.com/ImageMagick/ImageMagick/pull/373).
  • Document behavior change in the security policy (thanks to yoya @ https://blog.awm.jp/2017/02/09/imagemagick-en/).
  • Return unbiased standard deviation for image statistics (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31377).
  • Don't set update trait on alpha channel (private e-mail concerning -levels-colors option).
  • -
    2017-02-04 7.0.4-7 Cristy <quetzlzacatenango@image...>
    +
    2017-02-04 7.0.4-7 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.4-7, GIT revision 19513:5783e57:20170204.
  • -
    2017-01-28 7.0.4-7 Cristy <quetzlzacatenango@image...>
    +
    2017-01-28 7.0.4-7 Cristy <quetzlzacatenango@image...>
  • Sanitize comments that include braces for the MIFF image format (reference https://github.com/ImageMagick/ImageMagick/issues/368).
  • -
    2017-01-27 7.0.4-7 Glenn Randers-Pehrson <glennrp@image...>
    +
    2017-01-27 7.0.4-7 Glenn Randers-Pehrson <glennrp@image...>
  • coders/png.c: Added support for a proposed new PNG chunk (zxIf, read-only) that is currently being discussed on the png-mng-misc at lists.sourceforge.net mailing list. Enable exIf and zxIf with CPPFLAGS="-DexIf_SUPPORTED -DxzIf_SUPPORTED". If exIf is enabled, only the uncompressed exIF chunk will be written and the hex-encoded zTXt chunk containing the raw Exif profile won't be written.
  • -
    2017-01-27 7.0.4-6 Cristy <quetzlzacatenango@image...>
    +
    2017-01-27 7.0.4-6 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.4-6, GIT revision 19442:4747de9:20170127.
  • -
    2017-01-27 7.0.4-6 Cristy <quetzlzacatenango@image...>
    +
    2017-01-27 7.0.4-6 Cristy <quetzlzacatenango@image...>
  • Uninitialized data in MAT image format (reference https://github.com/ImageMagick/ImageMagick/issues/362).
  • Properly auto-fit caption (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=30887).
  • Correction to composite Over operator (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31282).
  • Respect gravity option (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31284).
  • -
    2017-01-22 7.0.4-6 Glenn Randers-Pehrson <glennrp@image...>
    +
    2017-01-22 7.0.4-6 Glenn Randers-Pehrson <glennrp@image...>
  • Renamed read_vpag_chunk_callback() function to png_user_chunk_callback() in coders/png.c
  • Implemented a private PNG caNv (canvas) chunk for remembering the original dimensions and offsets when an image is cropped. Previously we used the oFFs and vpAg chunks for this purpose, but this had potential conflicts with other applications that also use the oFFs chunk.
  • coders/png.c: Added support for a proposed new PNG chunk (exIf read-write, eXIf read-only) that is currently being discussed on the png-mng-misc at lists.sourceforge.net mailing list.
  • -
    2017-01-22 7.0.4-6 Dirk Lemstra <dirk@lem.....org>
    +
    2017-01-22 7.0.4-6 Dirk Lemstra <dirk@lem.....org>
  • Replaced CoderSeekableStreamFlag with CoderDecoderSeekableStreamFlag and CoderEncoderSeekableStreamFlag.
  • -
    2017-01-21 7.0.4-5 Cristy <quetzlzacatenango@image...>
    +
    2017-01-21 7.0.4-5 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.4-5, GIT revision 19381:7ae396f:20170121.
  • -
    2017-01-18 7.0.4-5 Cristy <quetzlzacatenango@image...>
    +
    2017-01-18 7.0.4-5 Cristy <quetzlzacatenango@image...>
  • Don't set background for transparent tiled images (reference http://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31210).
  • -
    2017-01-14 7.0.4-4 Cristy <quetzlzacatenango@image...>
    +
    2017-01-14 7.0.4-4 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.4-4, GIT revision 19361:a12953c:20170114.
  • -
    2017-01-14 7.0.4-4 Dirk Lemstra <dirk@lem.....org>
    +
    2017-01-14 7.0.4-4 Dirk Lemstra <dirk@lem.....org>
  • Added support for RGB555, RGB565, ARGB4444 and ARGB1555 to the BMP encoder (reference https://github.com/ImageMagick/ImageMagick/issues/344).
  • -
    2017-01-10 7.0.4-4 Cristy <quetzlzacatenango@image...>
    +
    2017-01-10 7.0.4-4 Cristy <quetzlzacatenango@image...>
  • Recognize XML policy closing tags (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31182).
  • Fix memory leak in the MPC format.
  • -
    2017-01-07 7.0.4-3 Cristy <quetzlzacatenango@image...>
    +
    2017-01-07 7.0.4-3 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.4-3, GIT revision 19329:930ca78:20170107.
  • -
    2017-01-04 7.0.4-3 Cristy <quetzlzacatenango@image...>
    +
    2017-01-04 7.0.4-3 Cristy <quetzlzacatenango@image...>
  • Increase memory allocation for TIFF pixels (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31161).
  • -
    2017-01-03 7.0.4-2 Cristy <quetzlzacatenango@image...>
    +
    2017-01-03 7.0.4-2 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.4-2, GIT revision 19318:8766311:20170103.
  • -
    2017-01-02 7.0.4-2 Cristy <quetzlzacatenango@image...>
    +
    2017-01-02 7.0.4-2 Cristy <quetzlzacatenango@image...>
  • Validation unit test for MNG works again.
  • -
    2016-12-31 7.0.4-1 Cristy <quetzlzacatenango@image...>
    +
    2016-12-31 7.0.4-1 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.4-1, GIT revision 19292:c5ccfa8:20161231.
  • -
    2016-12-26 7.0.4-1 Cristy <quetzlzacatenango@image...>
    +
    2016-12-26 7.0.4-1 Cristy <quetzlzacatenango@image...>
  • Initialize draw_info alpha member to OpaqueAlpha.
  • Monochrome images no longer have inverted colors (reference https://github.com/ImageMagick/ImageMagick/issues/332).
  • -
    2016-12-18 7.0.4-0 Cristy <quetzlzacatenango@image...>
    +
    2016-12-18 7.0.4-0 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.4-0, GIT revision 19221:d5e8abc:20161218.
  • -
    2016-12-14 7.0.4-0 Cristy <quetzlzacatenango@image...>
    +
    2016-12-14 7.0.4-0 Cristy <quetzlzacatenango@image...>
  • Do not close path for linejoins of round (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31039).
  • -
    2016-12-10 7.0.3-10 Cristy <quetzlzacatenango@image...>
    +
    2016-12-10 7.0.3-10 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.3-10, GIT revision 19191:338f088:20161210.
  • -
    2016-12-07 7.0.3-10 Cristy <quetzlzacatenango@image...>
    +
    2016-12-07 7.0.3-10 Cristy <quetzlzacatenango@image...>
  • Set colorspace to sRGB if -append has non-homogenous colorspaces (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=29105).
  • Respect connected-components:area-threshold define (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31006).
  • Enable alpha channel if background color is non-opaque (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31016).
  • Return correct offset for negative index for -fx option (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31019).
  • Fixed improper scaling of certain FITS images (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31028).
  • Properly center text label (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=31027).
  • -
    2016-12-05 7.0.3-9 Cristy <quetzlzacatenango@image...>
    +
    2016-12-05 7.0.3-9 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.3-9, GIT revision 19139:6fed3f1:20161205.
  • -
    2016-11-26 7.0.3-9 Cristy <quetzlzacatenango@image...>
    +
    2016-11-26 7.0.3-9 Cristy <quetzlzacatenango@image...>
  • Support the compare -read-mask option.
  • Support read-masks for the -modulate option.
  • Prevent buffer overflow when streaming an image (reference https://github.com/ImageMagick/ImageMagick/issues/312).
  • Fix possible buffer overflow when writing compressed TIFFS (vulnerability report from Cisco Talos, CVE-2016-8707).
  • -
    2016-11-15 7.0.3-8 Cristy <quetzlzacatenango@image...>
    +
    2016-11-15 7.0.3-8 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.3-8, GIT revision 19067:5aceded:20161125.
  • -
    2016-11-18 7.0.3-8 Cristy <quetzlzacatenango@image...>
    +
    2016-11-18 7.0.3-8 Cristy <quetzlzacatenango@image...>
  • Support the phash:colorspaces and phash:normalize options.
  • If a convenient line break is not found, force it for caption: (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=30887).
  • Set alpha member of draw structure to OpaqueAlpha (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=30894).
  • @@ -216,186 +222,186 @@
  • Permit EPT images with just a TIFF or EPS image, not both (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=30921).
  • The -clone option no longer leaks memory.
  • Render to clip mask rather than image for clip-path MVG graphics primitive.
  • -
    2016-11-15 7.0.3-7 Cristy <quetzlzacatenango@image...>
    +
    2016-11-15 7.0.3-7 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.3-7, GIT revision 19024:87aca83:20161115.
  • -
    2016-11-10 7.0.3-7 Cristy <quetzlzacatenango@image...>
    +
    2016-11-10 7.0.3-7 Cristy <quetzlzacatenango@image...>
  • Web pages were broken when we moved to HTTPS protocol.
  • -
    2016-11-08 7.0.3-6 Cristy <quetzlzacatenango@image...>
    +
    2016-11-08 7.0.3-6 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.3-6, GIT revision 19001:4cff747:20161108.
  • -
    2016-11-01 7.0.3-6 Cristy <quetzlzacatenango@image...>
    +
    2016-11-01 7.0.3-6 Cristy <quetzlzacatenango@image...>
  • Off by one memory allocation (reference https://github.com/ImageMagick/ImageMagick/issues/296).
  • The -extent option now matches the results of IMv6 (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=1&t=30779).
  • Prevent fault in MSL interpreter (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=30797).
  • Mask composite produces proper results for the convert utility (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=29675).
  • -
    2016-10-10 7.0.3-5 Cristy <quetzlzacatenango@image...>
    +
    2016-10-10 7.0.3-5 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.3-5, GIT revision 18975:a8174a2:20161030.
  • -
    2016-10-16 7.0.3-5 Dirk Lemstra <dirk@lem.....org>
    +
    2016-10-16 7.0.3-5 Dirk Lemstra <dirk@lem.....org>
  • Added layer RLE compression to the PSD encoder.
  • -
    2016-10-10 7.0.3-4 Cristy <quetzlzacatenango@image...>
    +
    2016-10-10 7.0.3-4 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.3-4, GIT revision 18937:83da034:20161010.
  • -
    2016-10-10 7.0.3-4 Dirk Lemstra <dirk@lem.....org>
    +
    2016-10-10 7.0.3-4 Dirk Lemstra <dirk@lem.....org>
  • Fixed incorrect parsing with ordered dither. (reference https://github.com/ImageMagick/ImageMagick/issues/254)
  • -
    2016-10-10 7.0.3-4 Cristy <quetzlzacatenango@image...>
    +
    2016-10-10 7.0.3-4 Cristy <quetzlzacatenango@image...>
  • Unit test pass again after small SUN image patch.
  • -
    2016-10-08 7.0.3-3 Cristy <quetzlzacatenango@image...>
    +
    2016-10-08 7.0.3-3 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.3-3, GIT revision 18924:d6614e7:20161008.
  • -
    2016-10-07 7.0.3-3 Dirk Lemstra <dirk@lem.....org>
    +
    2016-10-07 7.0.3-3 Dirk Lemstra <dirk@lem.....org>
  • Fixed incorrect RLE decoding when reading a DCM image that contains multiple segments.
  • -
    2016-10-02 7.0.3-2 Cristy <quetzlzacatenango@image...>
    +
    2016-10-02 7.0.3-2 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.3-2, GIT revision 18887:6b27c5b:20161002.
  • -
    2016-09-27 7.0.3-2 Dirk Lemstra <dirk@lem.....org>
    +
    2016-09-27 7.0.3-2 Dirk Lemstra <dirk@lem.....org>
  • Fixed incorrect RLE decoding when reading an SGI image (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=30514)
  • -
    2016-09-20 7.0.3-1 Cristy <quetzlzacatenango@image...>
    +
    2016-09-20 7.0.3-1 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.3-1, GIT revision 18851:ad91ea8:20160920.
  • -
    2016-09-16 7.0.3-1 Dirk Lemstra <dirk@lem.....org>
    +
    2016-09-16 7.0.3-1 Dirk Lemstra <dirk@lem.....org>
  • Added layer RLE compression to the PSD encoder.
  • Added define 'psd:preserve-opacity-mask' to preserve the opacity mask in a PSD file.
  • Fixed issue where the display window was used instead of the data window when reading EXR files (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&p=137849).
  • -
    2016-09-05 7.0.3-0 Cristy <quetzlzacatenango@image...>
    +
    2016-09-05 7.0.3-0 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.3-0, GIT revision 18786:10aa64c:20160905.
  • -
    2016-08-29 7.0.3-0 Dirk Lemstra <dirk@lem.....org>
    +
    2016-08-29 7.0.3-0 Dirk Lemstra <dirk@lem.....org>
  • Fixed reading DXT1 images with an alpha channel.
  • Fixed incorrect padding calculation in PSD encoder.
  • -
    2016-08-27 7.0.2-10 Cristy <quetzlzacatenango@image...>
    +
    2016-08-27 7.0.2-10 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.2-10, GIT revision 18750:e3335b3:20160827.
  • -
    2016-08-27 7.0.2-10 Dirk Lemstra <dirk@lem.....org>
    +
    2016-08-27 7.0.2-10 Dirk Lemstra <dirk@lem.....org>
  • Added define 'psd:additional-info' to preserve the additional information in a PSD file.
  • -
    2016-08-15 7.0.2-10 Cristy <quetzlzacatenango@image...>
    +
    2016-08-15 7.0.2-10 Cristy <quetzlzacatenango@image...>
  • Prevent buffer overflow in BMP & SGI coders (bug report from pwchen&rayzhong of tencent).
  • Prevent buffer overflow and other problems in SIXEL, PDB, MAP, TIFF and CALS coders (bug report from Donghai Zhu).
  • The -stream option now increments the pixel pointer properly (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=30327).
  • -
    2016-08-14 7.0.2-9 Cristy <quetzlzacatenango@image...>
    +
    2016-08-14 7.0.2-9 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.2-9, GIT revision 18707:2c02f09:20160814.
  • -
    2016-08-14 7.0.2-9 Cristy <quetzlzacatenango@image...>
    +
    2016-08-14 7.0.2-9 Cristy <quetzlzacatenango@image...>
  • Fix compile error in opencl.c (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=30289).
  • Eliminate compiler warning.
  • -
    2016-08-14 7.0.2-8 Cristy <quetzlzacatenango@image...>
    +
    2016-08-14 7.0.2-8 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.2-8, GIT revision 18698:74b1d5d:20160814.
  • -
    2016-08-07 7.0.2-8 Cristy <quetzlzacatenango@image...>
    +
    2016-08-07 7.0.2-8 Cristy <quetzlzacatenango@image...>
  • Prevent spurious removal of MPC cache files (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=30256).
  • Note alpha channel when combining 4 or more images (reference https://github.com/ImageMagick/ImageMagick/issues/250).
  • -
    2016-08-06 7.0.2-7 Cristy <quetzlzacatenango@image...>
    +
    2016-08-06 7.0.2-7 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.2-7, GIT revision 10980:ecc03a2:20160806.
  • -
    2016-08-01 7.0.2-7 Cristy <quetzlzacatenango@image...>
    +
    2016-08-01 7.0.2-7 Cristy <quetzlzacatenango@image...>
  • Evaluate lazy pixel cache morphology to prevent buffer overflow (bug report from Ibrahim M. El-Sayed).
  • Prevent buffer overflow (bug report from Max Thrane).
  • Prevent memory use after free (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=30245).
  • -
    2016-07-30 7.0.2-6 Cristy <quetzlzacatenango@image...>
    +
    2016-07-30 7.0.2-6 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.2-6, GIT revision 18651:df24175:20160729.
  • -
    2016-07-29 7.0.2-6 Cristy <quetzlzacatenango@image...>
    +
    2016-07-29 7.0.2-6 Cristy <quetzlzacatenango@image...>
  • Support -region option (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=1&t=29692).
  • -
    2016-07-21 7.0.2-5 Cristy <quetzlzacatenango@image...>
    +
    2016-07-21 7.0.2-5 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.2-5, GIT revision 18627:2b5ddbd:20160721.
  • -
    2016-07-13 7.0.2-5 Cristy <quetzlzacatenango@image...>
    +
    2016-07-13 7.0.2-5 Cristy <quetzlzacatenango@image...>
  • Fix MVG stroke-opacity (reference https://github.com/ImageMagick/ImageMagick/issues/229).
  • Prevent possible buffer overflow when reading TIFF images (bug report from Shi Pu of MS509 Team).
  • Initialize index channel to get expected results from the stegano coder.
  • -
    2016-07-11 7.0.2-4 Cristy <quetzlzacatenango@image...>
    +
    2016-07-11 7.0.2-4 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.2-4, GIT revision 18591:50debe5:20160710.
  • -
    2016-07-10 7.0.2-4 Cristy <quetzlzacatenango@image...>
    +
    2016-07-10 7.0.2-4 Cristy <quetzlzacatenango@image...>
  • To comply with the SVG standard, use stroke-opacity for transparent strokes.
  • Define CompositeChannels mask to Red, Green, Blue, Alpha, and Black.
  • -
    2016-07-09 7.0.2-3 Cristy <quetzlzacatenango@image...>
    +
    2016-07-09 7.0.2-3 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.2-3, GIT revision 18572:28560fc:20160709.
  • -
    2016-07-01 7.0.2-3 Cristy <quetzlzacatenango@image...>
    +
    2016-07-01 7.0.2-3 Cristy <quetzlzacatenango@image...>
  • Patch so -kuwahara option can preserve colormapped edges.
  • The histogram coder now returns the correct extent.
  • Use CopyMagickString() rather than CopyMagickMemory() for strings.
  • -
    2016-06-26 7.0.2-2 Cristy <quetzlzacatenango@image...>
    +
    2016-06-26 7.0.2-2 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.2-2, GIT revision 18514:a7b5b46:20160626.
  • -
    2016-06-23 7.0.2-2 Cristy <quetzlzacatenango@image...>
    -
  • Correct for numerical instability (reference https://github.com/ImageMagick/ImageMagick/issues/218).
    +
    2016-06-23 7.0.2-2 Cristy <quetzlzacatenango@image...>
    +
  • Correct for numerical instability (reference https://github.com/ImageMagick/ImageMagick/issues/218).
  • 2016-06-21 7.0.2-1 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.2-1, GIT revision 18479:931319b:20160622.
  • -
    2016-06-17 7.0.2-1 Dirk Lemstra <dirk@lem.....org>
    +
    2016-06-17 7.0.2-1 Dirk Lemstra <dirk@lem.....org>
  • Added support for GROUP4 compression to the FAX coder.
  • -
    2016-06-12 7.0.2-1 Cristy <quetzlzacatenango@image...>
    +
    2016-06-12 7.0.2-1 Cristy <quetzlzacatenango@image...>
  • Distort no longer converts grayscale image to sRGB (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=1&t=29895).
  • Don't return a zero bounding box for QueryMultilineFontMetrics() (reference https://github.com/ImageMagick/ImageMagick/issues/222).
  • -
    2016-06-12 7.0.2-0 Cristy <quetzlzacatenango@image...>
    +
    2016-06-12 7.0.2-0 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.2-0, GIT revision 10884:f0e15e8:20160612.
  • -
    2016-06-09 7.0.2-0 Cristy <quetzlzacatenango@image...>
    +
    2016-06-09 7.0.2-0 Cristy <quetzlzacatenango@image...>
  • Backoff finite precision epsilon (reference https://github.com/ImageMagick/ImageMagick/issues/215).
  • Fix drawing glitch for stroke widths greater than 2 (reference https://github.com/ImageMagick/ImageMagick/issues/218).
  • -
    2016-06-05 7.0.1-10 Cristy <quetzlzacatenango@image...>
    +
    2016-06-05 7.0.1-10 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.1-10, GIT revision 18406:ba4ad2d:20160607.
  • -
    2016-06-04 7.0.1-10 Cristy <quetzlzacatenango@image...>
    +
    2016-06-04 7.0.1-10 Cristy <quetzlzacatenango@image...>
  • Deny indirect reads by policy, remove policy to permit, e.g., convert caption:@mytext.txt ...
  • RLE check for pixel offset less than 0 (heap overflow report from Craig Young).
  • Properly initialze PES blocks (reference https://github.com/ImageMagick/ImageMagick/issues/213).
  • -
    2016-06-03 7.0.1-9 Cristy <quetzlzacatenango@image...>
    +
    2016-06-03 7.0.1-9 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.1-9, GIT revision 10847:339f803:20160602.
  • -
    2016-06-02 7.0.1-9 Cristy <quetzlzacatenango@image...>
    +
    2016-06-02 7.0.1-9 Cristy <quetzlzacatenango@image...>
  • Fix small memory leak (patch provided by Андрей Черный).
  • Coder path traversal is not authorized (bug report provided by Masaaki Chida).
  • Turn off alpha channel for the compare difference image (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=29828).
  • -
    2016-05-31 7.0.1-8 Cristy <quetzlzacatenango@image...>
    +
    2016-05-31 7.0.1-8 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.1-8, GIT revision 18334:97775b5:20160531.
  • -
    2016-05-31 7.0.1-8 Cristy <quetzlzacatenango@image...>
    +
    2016-05-31 7.0.1-8 Cristy <quetzlzacatenango@image...>
  • Support configure script --enable-pipes option to enable pipes (|) in filenames.
  • Support configure script --enable-indirect-reads option to enable indirect reads (@) in filenames.
  • -
    2016-05-30 7.0.1-7 Cristy <quetzlzacatenango@image...>
    +
    2016-05-30 7.0.1-7 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.1-7, GIT revision 18321:5511ef5:20160530.
  • -
    2016-05-25 7.0.1-7 Cristy <quetzlzacatenango@image...>
    +
    2016-05-25 7.0.1-7 Cristy <quetzlzacatenango@image...>
  • Security improvements to TEXT coder broke it (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=29754).
  • Fix stroke offset problem for -annotate (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=29626).
  • Don't interpret -fx option arguments (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=29774);
  • Add additional checks to DCM reader to prevent data-driven faults (bug report from Hanno Böck).
  • -
    2016-05-21 7.0.1-6 Cristy <quetzlzacatenango@image...>
    +
    2016-05-21 7.0.1-6 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.1-6, GIT revision 18241:d4f277c:20160521.
  • -
    2016-05-20 7.0.1-6 Cristy <quetzlzacatenango@image...>
    +
    2016-05-20 7.0.1-6 Cristy <quetzlzacatenango@image...>
  • Fixed proper placement of text annotation for east / west gravity.
  • -
    2016-05-18 7.0.1-5 Cristy <quetzlzacatenango@image...>
    +
    2016-05-18 7.0.1-5 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.1-5, GIT revision 10789:f7c2e89:20160518,
  • -
    2016-05-18 7.0.1-5 Cristy <quetzlzacatenango@image...>
    +
    2016-05-18 7.0.1-5 Cristy <quetzlzacatenango@image...>
  • Process channels independently for -channel -equalize (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=3&t=29708).
  • Fix pixel cache on disk regression (reference https://github.com/ImageMagick/ImageMagick/issues/202).
  • -
    2016-05-15 7.0.1-4 Cristy <quetzlzacatenango@image...>
    +
    2016-05-15 7.0.1-4 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.1-4, GIT revision 10778:52dae14:20160516.
  • -
    2016-05-10 7.0.1-4 Cristy <quetzlzacatenango@image...>
    +
    2016-05-10 7.0.1-4 Cristy <quetzlzacatenango@image...>
  • Prevent possible shell command injection vulnerability through the authenticate parameter of the PDF, PCL and XPS coders (report from Erez Turjeman).
  • Quote passwords when passed to a delegate program.
  • Iterate channels over source image rather than destination (bug report from Hanno Böck).
  • Can read geo-related EXIF metdata once-again (reference https://github.com/ImageMagick/ImageMagick/issues/198).
  • Sanitize all delegate emedded formatting characters.
  • Don't sync pixel cache in AcquireAuthenticCacheView() (bug report from Hanno Böck).
  • -
    2016-05-09 7.0.1-3 Cristy <quetzlzacatenango@image...>
    +
    2016-05-09 7.0.1-3 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.1-3, GIT revision 10755:d540dda:20160509.
  • -
    2016-05-07 7.0.1-3 Cristy <quetzlzacatenango@image...>
    +
    2016-05-07 7.0.1-3 Cristy <quetzlzacatenango@image...>
  • Remove https delegate.
  • -
    2016-05-06 7.0.1-2 Cristy <quetzlzacatenango@image...>
    +
    2016-05-06 7.0.1-2 Cristy <quetzlzacatenango@image...>
  • Release ImageMagick version 7.0.1-2, GIT revision 10741:5746147:20160507.
  • -
    2016-05-04 7.0.1-2 Cristy <quetzlzacatenango@image...>
    +
    2016-05-04 7.0.1-2 Cristy <quetzlzacatenango@image...>
  • Check for buffer overflow in magick/draw.c/DrawStrokePolygon().
  • Replace show delegate title with image filename rather than label.
  • Fix GetNextToken() off by one error.
  • Remove support for internal ephemeral coder.
  • -
    2016-05-03 7.0.1-1 Cristy <quetzlzacatenango@image...>
    +
    2016-05-03 7.0.1-1 Cristy <quetzlzacatenango@image...>
  • New version 7.0.1-1, GIT revision 10723:9fc8a0c:20160503.
  • -
    2016-05-03 7.0.1-1 Cristy <quetzlzacatenango@image...>
    +
    2016-05-03 7.0.1-1 Cristy <quetzlzacatenango@image...>
  • Sanitize input filename for http / https delegates (improved patch).
  • Fix for possible security vulnerabilities (reference https://www.imagemagick.org/discourse-server/viewtopic.html?f=4&t=29588).
  • -
    2016-04-30 7.0.1-0 Cristy <quetzlzacatenango@image...>
    +
    2016-04-30 7.0.1-0 Cristy <quetzlzacatenango@image...>
  • New version 7.0.1-0, GIT revision 10716:b527bce:20160430.
  • -
    2016-01-30 7.0.0-0 Fahad-Alsaidi & ShamsaHamed
    +
    2016-01-30 7.0.0-0 Fahad-Alsaidi & ShamsaHamed
  • Add support for languages that require complex text layout (reference https://github.com/ImageMagick/ImageMagick/pull/88).
  • -
    2012-04-27 7.0.0-0 Anthony thyssen <A.Thyssen@griffith...>
    +
    2012-04-27 7.0.0-0 Anthony thyssen <A.Thyssen@griffith...>
  • Allow the use of set and escapes when no images in memory (unless you attempt to access per-image meta-data) Currently does not include %[fx:...] and %[pixel:...]
  • -
    2012-10-05 7.0.0-0 Anthony thyssen <A.Thyssen@griffith...>
    +
    2012-10-05 7.0.0-0 Anthony thyssen <A.Thyssen@griffith...>
  • Rather than replicate 'options' into 'artifacts' make a link from image to image_info and lookup a global option if no artifact is defined.
  • -
    2012-09-11 7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
    +
    2012-09-11 7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
  • sigmoidal-contrast:
  • Remove unnecessary initial ClampToQuantum.
  • -
    2012-09-10 7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
    +
    2012-09-10 7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
  • sigmoidal-contrast:
  • Direct computation, without LUT;
  • Fix re-declaration of i (at the top, and inside a conditional).
  • -
    2012-09-04 7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
    +
    2012-09-04 7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
  • Add tanh/atanh clone of legacy sigmoidal map (faster & more accurate).
  • -
    2012-08-08 7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
    +
    2012-08-08 7.0.0-0 Nicolas Robidoux <nicolas.robidoux@gmail...>
  • Add final ClampToQuantum in sigmoidal colormap loop.
  • Remove OpenMP calls from colormap update loops.
  • -
    2011-08-01 7.0.0-0 Cristy <quetzlzacatenango@image...>
    +
    2011-08-01 7.0.0-0 Cristy <quetzlzacatenango@image...>
  • New version 7.0.0-0.
  • Donate • @@ -416,4 +422,4 @@

    - \ No newline at end of file + \ No newline at end of file diff --git a/www/cipher.html b/www/cipher.html index 36b7f4a39..7c7b2767b 100644 --- a/www/cipher.html +++ b/www/cipher.html @@ -25,14 +25,13 @@ - - - + + + - + -
    (adsbygoogle = window.adsbygoogle || []).push({}); -
    +

    Encipher an Image • Decipher an Image • Encipher and Decipher Caveats

    @@ -63,29 +63,29 @@

    You could use an enciphering utility to scramble your image but they typically scramble the entire file making it unrecognizable as an image format. With ImageMagick, only the pixels are scrambled. The scrambled image continues to be recognized as an image and will even display in your web page. However, the content appears as gibberish, nothing like the original content.

    -

    Encipher an Image

    +

    Encipher an Image

    Use the -encipher option to scramble your image so that it is unrecognizable. The option requires a filename that contains your passphrase. In this example we scramble an image and save it in the PNG format:

    -
    +
    
     convert rose.jpg -encipher passphrase.txt rose.png
    -
    +

    Here we encipher an image using another image as the passphrase:

    -
    +
    
     convert rose.jpg -encipher smiley.gif rose.png
    -
    +
    -

    Decipher an Image

    +

    Decipher an Image

    Use the -decipher option to unscramble your image so that it is recognizable once again. The option requires a filename that contains your passphrase. In this example we unscramble an image and save it in the JPEG format:

    -
    +
    
     convert rose.png -decipher passphrase.txt rose.jpg
    -
    +
    -

    Encipher and Decipher Caveats

    +

    Encipher and Decipher Caveats

    Some formats do not support enciphered pixels-- the JPEG or GIF format, for example. To ensure your image format is supported, encipher a test image and @@ -140,4 +140,4 @@ Examples - \ No newline at end of file + \ No newline at end of file diff --git a/www/color-management.html b/www/color-management.html index acd552055..19a74e80a 100644 --- a/www/color-management.html +++ b/www/color-management.html @@ -25,14 +25,13 @@ - - - + + + - + -

    +

    Color management has changed significantly between ImageMagick version 6.7.5-5 and 6.8.0-3 in order to better conform to color and grayscale standards.

    @@ -64,63 +64,63 @@

    ImageMagick supports color profiles, however, for images without a profile or a declaration of colorspace, ImageMagick assumes non-linear sRGB. Most image processing algorithms assume a linear colorspace, therefore it might be prudent to convert to linear color or remove the gamma function before certain image processing algorithms are applied. For example,

    -
    +
    
     convert myimage.jpg -colorspace RGB -resize 200% -colorspace sRGB mybigimage.jpg
    -
    +

    To declare that an image is linear RGB rather than sRGB, you can use the set option:

    -
    +
    
     convert myimage.png -set colorspace RGB myRGBimage.png
    -
    +

    Afterwards, the verbose information for the output file lists the colorspace as RGB. This only works on image types containing meta data that distinguishes between linear RGB and non-linear sRGB, such as PNG and GIF. Therefore, if the above command is run with a JPG or TIF output format, the verbose information for the colorspace still shows sRGB. In order to properly have the JPG output know that it is linear RGB, include an appropriate color profile.

    The second major change treats any grayscale image as linear rather than non-linear, as it was previously. This change is appropriate, since many types of processing requires a linear colorspace. This means that the conversion of a color image to grayscale via -colorspace gray looks darker relative to previous versions of ImageMagick (note that desaturating to convert to grayscale does not convert the image to linear grayscale). If you prefer to keep the conversion to non-linear grayscale, set the colorspace of the input to linear RGB so that -colorspace gray does not apply the gamma correction during the conversion process. For example, the following produces a non-linear grayscale result.

    -
    +
    
     convert myimage.png -set colorspace RGB -colorspace gray myRGBimage.png
    -
    +

    The same concept is needed when separating channels. Normally, the conversion to separate each channel of an sRGB color image produces separate linear grayscale images. However the same concept can be applied, if it is desired to keep the separate channels as non-linear grayscale. For example, the following produces non-linear grayscale channels.

    -
    +
    
     convert myimage.png -set colorspace RGB -separate myimage_channels_%d.png
    -
    +

    When separating and recombining channels, with potential intermediate processing, it is important to identify the colorspace used, especially during the recombination. For example,

    -
    +
    
     convert myimage.png -separate myimage_channels_%d.png
     convert myimage_channels_*.png -combine myimage2.png
    -
    +

    In the above example, the result is darker than the original, because the channels were separate as linear gray and subsequently combined as linear color. In order to return the channels back to sRGB, one must change the colorspace from RGB back to sRGB after the -combine step.

    -
    +
    
     convert myimage.png -separate myimage_channels_%d.png
     convert myimage_channels_*.png -combine -colorspace sRGB myimage2.png
    -
    +

    If one desires to separate to non-linear grayscale channels, recombine them later, perhaps after some processing, then use the same concept as above for maintaining non-linear grayscale:

    -
    +
    
     convert myimage.png -set colorspace RGB -separate myimage_channels_%d.png
     convert myimage_channels_*.png -combine -colorspace RGB -set colorspace sRGB myimage2.png
    -
    +

    When converting to another colorspace and back, such as between sRGB and HSL, the following two commands handle the first case of linear channels and the second case of non-linear channels:

    -
    +
    
     convert myimage.png -colorspace HSL -separate myimage_channels_%d.png
     convert myimage_channels_*.png -set colorspace HSL -combine -colorspace sRGB myimage2.png
    -
    +
    -
    +
    
     convert myimage.png -set colorspace RGB -colorspace HSL -separate myimage_channels_%d.png
     convert myimage_channels_*.png -set colorspace HSL -combine -colorspace RGB -set colorspace sRGB myimage2.png
    -
    +

    A majority of the image formats assume an sRGB colorspace (e.g. JPEG, PNG, etc.). A few support only linear RGB (e.g. EXR, DPX, CIN, HDR) or only linear GRAY (e.g. PGM). A few formats support CMYK. For example JPG does, but PNG does not. Then there is the occasional format that also supports LAB (that is CieLAB) (e.g. TIFF, PSD, JPG, JP2). For additional information, see the Colorspace and Supported Formats pages.

    @@ -150,4 +150,4 @@ convert myimage_channels_*.png -set colorspace HSL -combine -colorspace RGB -set
    - \ No newline at end of file + \ No newline at end of file diff --git a/www/color.html b/www/color.html index e85c81e45..8fff2b024 100644 --- a/www/color.html +++ b/www/color.html @@ -25,14 +25,13 @@ - - - + + + - + -
    (adsbygoogle = window.adsbygoogle || []).push({}); -
    +

    Example Usage • Color Model Specification • List of Color Names

    @@ -63,25 +63,25 @@

    Use the Color Converter to supply any valid ImageMagick color specification as described below to see a color swatch of that color and to convert to all the other color models.

    -

    Example Usage

    +

    Example Usage

    Each of the following commands produces the same lime border around the image. (Use "double quotes" for Windows.)

    -
    +
    
     convert -bordercolor lime -border 10 image.jpg image.png
     convert -bordercolor '#0f0' -border 10 image.jpg image.png
     convert -bordercolor '#00ff00' -border 10 image.jpg image.png
     convert -bordercolor 'rgb(0,255,0)' -border 10 image.jpg image.png
     convert -bordercolor 'rgb(0,100%,0)' -border 10 image.jpg image.png
    -
    +

    The list of recognized color names (for example, aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, yellow, and others) is shown in a table further below.

    -

    Color Model Specification

    +

    Color Model Specification

    The sRGB, CMYK, HSL and HSB color models are used in numerical color specifications. These examples all specify the same red sRGB color:

    -
    +
    
     #f00                      #rgb
     #ff0000                   #rrggbb
     #ff0000ff                 #rrggbbaa
    @@ -99,12 +99,12 @@ rgb(100.0%, 0.0%, 0.0%)   a float in the range 0—100% for each component
     
     

    The sRGB color model is extended in this specification to include alpha to allow specification of the transparency of a color. These examples all specify the same color:

    -
    +
    
     rgb(255, 0, 0)                 range 0 - 255
     rgba(255, 0, 0, 1.0)           the same, with an explicit alpha value
     rgb(100%, 0%, 0%)              range 0.0% - 100.0%
     rgba(100%, 0%, 0%, 1.0)        the same, with an explicit alpha value
    -
    +

    The format of an RGBA value in the functional notation is 'rgba(r,g,b,a)', where r, g, and b are as described above for the RGB functional notation, and where the alpha value a ranges from 0.0 (fully transparent) to 1.0 (fully opaque).

    @@ -112,10 +112,10 @@ rgba(100%, 0%, 0%, 1.0) the same, with an explicit alpha value

    Gray values are conveniently defined with a single intensity value or an intensity value and an alpha value:

    -
    +
    
     gray(50%)        mid gray
     graya(50%, 0.5)  semi-transparent mid gray
    -
    +

    The ImageMagick color model also supports hue-saturation-lightness (HSL) and hue-saturation-brightness (HSB) colors as a complement to numerical sRGB colors. HSL colors are encoding as a triple (hue, saturation, lightness). Likewise HSB colors are encoding as a triple (hue, saturation, brightness). HSL or HSB triples are either direct values (hue 0—360, saturation 0—255, lightness or brightness 0—255) or with S,L,B as percentage values relative to these ranges.

    @@ -133,31 +133,31 @@ graya(50%, 0.5) semi-transparent mid gray

    The HSB color system is a little easier to understand than the HSL color system. In the HSB color system, black is at the bottom apex and white is at the top center of the cone on the central axis. The most colorful or saturated colors will then be at the outer edge of the top of the cone at the widest part. Thus at Saturation=100% and Brightness=100%

    -
    +
    
     hsb(0,   100%,  100%)    or    hsb(0,   255,   255)          full red
     hsb(120, 100%,  100%)    or    hsb(120, 255,   255)       full green
     hsb(120, 100%,  75%)     or    hsb(120, 255,   191.25)    medium green
     hsb(120, 100%,  50%)     or    hsb(120, 255,   127.5)     dark green
     hsb(120, 100%,  25%)     or    hsb(120, 255,   63.75)     very dark green
     hsb(120, 50%,   50%)     or    hsb(120, 127.5, 127.5)     pastel green
    -
    +

    In the HSL color system, black is at the bottom apex and white is at the top apex. However, saturation is largest at the middle of the double cone on its outer perimeter and thus at a lightness value of 50%. The most colorful or saturated colors will then be at the outer edge of the double cone at its widest part. Thus at Saturation=100% and Brightness=50%

    -
    +
    
     hsl(0,   100%,  50%)     or    hsl(0,   255,   127.5)        full red
     hsl(120, 100%,  100%)    or    hsl(120, 255,   255)       white
     hsl(120, 100%,  75%)     or    hsl(120, 255,   191.25)    pastel green
     hsl(120, 100%,  50%)     or    hsl(120, 255,   127.5)     full green
     hsl(120, 100%,  25%)     or    hsl(120, 255,   63.75)     dark green
     hsl(120, 50%,   50%)     or    hsl(120, 127.5, 127.5)     medium green
    -
    +

    One advantage of HSB or HSL over RGB is that it can be more intuitive: you can guess at the colors you want, and then tweak. It is also easier to create sets of matching colors (by keeping the hue the same and varying the brightness or lightness and saturation, for example).

    Just as the 'rgb()' functional notation has the 'rgba()' alpha counterpart, the 'hsl()' and 'hsb()' functional notations have their 'hsla()' 'hsba()' alpha counterparts. These examples specify the same color:

    -
    +
    
     hsb(120, 100%,  100%)              full green in hsb
     hsba(120, 100%,  100%,  1.0)       the same, with an alpha value of 1.0
     hsb(120, 255,  255)                full green in hsb
    @@ -167,14 +167,14 @@ hsl(120, 100%,  50%)               full green in hsl
     hsla(120, 100%,  50%,  1.0)        the same, with an alpha value of 1.0
     hsl(120, 255,  127.5)              full green in hsl
     hsla(120, 255,  127.5,  1.0)       the same, with an alpha value of 1.0
    -
    +

    For ImageMagick between 6.5.6-6 and 6.9.2-0, HSL (HSB) could only be specified with Hue as percent in range 0—100%, when Saturation and Lightness (Brightness) were also specified as percent in range 0—100%.

    Specify the Lab colors like this:

    -
    +
    
     cielab(62.253188, 23.950124, 48.410653)
    -
    +

    Note, the a and b components of any Lab color you specify are biased internally by 50% to ensure it fits in the quantum range (typically 0 to 65535). The bias is retained when writing to the TIFF and MIFF image formats. However, the TXT format supports negative pixel values so the bias is removed when writing to this format:

     -> convert xc:cyan -colorspace LAB txt:
    @@ -182,26 +182,26 @@ cielab(62.253188, 23.950124, 48.410653)
     0,0: (91.1131%,-18.8571%,-5.5436%)  #E93F00000000  cielab(91.1131%,-18.8571%,-5.5436%)
     
     -> convert -size 100x100 xc:"cielab(91.1131%,-18.8571%,-5.5436%)" -colorspace sRGB cyan.png
    -
    +

    Or specify colors generically with the icc-color keyword, for example:

    -
    +
    
     icc-color(cmyk, 0.11, 0.48, 0.83, 0.00)
     icc-color(rgb, white)
    -
    +

    Or specify uncalibrated device colors with the device- keyword, for example:

    -
    +
    
     device-gray(0.5)
     device-rgb(0.5, 1.0, 0.0)
     device-cmyk(0.11, 0.48, 0.83, 0.00)
    -
    +
    -

    List of Color Names

    +

    List of Color Names

    The table below provides a list of named colors recognized by ImageMagick:

    -
    Option
    +
    @@ -4951,4 +4951,4 @@ device-cmyk(0.11, 0.48, 0.83, 0.00) - \ No newline at end of file + \ No newline at end of file diff --git a/www/command-line-options.html b/www/command-line-options.html index 6a6908ecc..f3bc6fb9d 100644 --- a/www/command-line-options.html +++ b/www/command-line-options.html @@ -25,14 +25,13 @@ - - - + + + - + -
    (adsbygoogle = window.adsbygoogle || []).push({}); -
    +

    ‑adaptive‑blur • ‑adaptive‑resize • ‑adaptive‑sharpen • ‑adjoin • ‑affine • ‑alpha • ‑annotate • ‑antialias • ‑append • ‑attenuate • ‑authenticate • ‑auto‑gamma • ‑auto‑level • ‑auto‑orient • ‑backdrop • ‑background • ‑bench • ‑bias • ‑black‑point‑compensation • ‑black‑threshold • ‑blend • ‑blue‑primary • ‑blue‑shift • ‑blur • ‑border • ‑bordercolor • ‑borderwidth • ‑brightness‑contrast • ‑cache • ‑canny • ‑caption • ‑cdl • ‑channel • ‑charcoal • ‑channel‑fx • ‑chop • ‑clamp • ‑clip • ‑clip‑mask • ‑clip‑path • ‑clone • ‑clut • ‑coalesce • ‑colorize • ‑colormap • ‑color‑matrix • ‑colors • ‑colorspace • ‑combine • ‑comment • ‑compare • ‑complex • ‑compose • ‑composite • ‑compress • ‑connected‑components • ‑contrast • ‑contrast‑stretch • ‑convolve • ‑copy • ‑crop • ‑cycle • ‑debug • ‑decipher • ‑deconstruct • ‑define • ‑delay • ‑delete • ‑density • ‑depth • ‑descend • ‑deskew • ‑despeckle • ‑direction • ‑displace • ‑display • ‑dispose • ‑dissimilarity‑threshold • ‑dissolve • ‑distort • ‑distribute‑cache • ‑dither • ‑draw • ‑duplicate • ‑edge • ‑emboss • ‑encipher • ‑encoding • ‑endian • ‑enhance • ‑equalize • ‑evaluate • ‑evaluate‑sequence • ‑extent • ‑extract • ‑family • ‑features • ‑fft • ‑fill • ‑filter • ‑flatten • ‑flip • ‑floodfill • ‑flop • ‑font • ‑foreground • ‑format • ‑format[identify] • ‑frame • ‑frame[import] • ‑function • ‑fuzz • ‑fx • ‑gamma • ‑gaussian‑blur • ‑geometry • ‑gravity • ‑grayscale • ‑green‑primary • ‑hald‑clut • ‑help • ‑highlight‑color • ‑hough‑lines • ‑iconGeometry • ‑iconic • ‑identify • ‑ift • ‑immutable • ‑implode • ‑insert • ‑intensity • ‑intent • ‑interlace • ‑interpolate • ‑interline‑spacing • ‑interword‑spacing • ‑kerning • ‑kuwahara • ‑label • ‑lat • ‑layers • ‑level • ‑level‑colors • ‑limit • ‑linear‑stretch • ‑linewidth • ‑liquid‑rescale • ‑list • ‑log • ‑loop • ‑lowlight‑color • ‑magnify • ‑map • ‑map[stream] • ‑mattecolor • ‑median • ‑mean‑shift • ‑metric • ‑mode • ‑modulate • ‑moments • ‑monitor • ‑monochrome • ‑morph • ‑morphology • ‑mosaic • ‑motion‑blur • ‑name • ‑negate • ‑noise • ‑normalize • ‑opaque • ‑ordered‑dither • ‑orient • ‑page • ‑paint • ‑path • ‑pause[animate] • ‑pause[import] • ‑perceptible • ‑ping • ‑pointsize • ‑polaroid • ‑poly • ‑posterize • ‑precision • ‑preview • ‑print • ‑process • ‑profile • ‑quality • ‑quantize • ‑quiet • ‑radial‑blur • ‑raise • ‑random‑threshold • ‑read‑mask • ‑red‑primary • ‑regard‑warnings • ‑region • ‑remap • ‑remote • ‑render • ‑repage • ‑resample • ‑resize • ‑respect‑parentheses • ‑reverse • ‑roll • ‑rotate • ‑sample • ‑sampling‑factor • ‑scale • ‑scene • ‑screen • ‑seed • ‑segment • ‑selective‑blur • ‑separate • ‑sepia‑tone • ‑set • ‑shade • ‑shadow • ‑shared‑memory • ‑sharpen • ‑shave • ‑shear • ‑sigmoidal‑contrast • ‑silent • ‑similarity‑threshold • ‑size • ‑sketch • ‑smush • ‑snaps • ‑solarize • ‑sparse‑color • ‑splice • ‑spread • ‑statistic • ‑stegano • ‑stereo • ‑storage‑type • ‑stretch • ‑strip • ‑stroke • ‑strokewidth • ‑style • ‑subimage‑search • ‑swap • ‑swirl • ‑synchronize • ‑taint • ‑text‑font • ‑texture • ‑threshold • ‑thumbnail • ‑tile • ‑tile‑offset • ‑tint • ‑title • ‑transform • ‑transparent • ‑transparent‑color • ‑transpose • ‑transverse • ‑treedepth • ‑trim • ‑type • ‑undercolor • ‑unique‑colors • ‑units • ‑unsharp • ‑update • ‑verbose • ‑version • ‑view • ‑vignette • ‑virtual‑pixel • ‑visual • ‑watermark • ‑wave • ‑wavelet‑denoise • ‑weight • ‑white‑point • ‑white‑threshold • ‑window • ‑window‑group • ‑write • ‑write‑mask

    Below is list of command-line options recognized by the ImageMagick command-line tools. If you want a description of a particular option, click on the option name in the navigation bar above and you will go right to it. Unless otherwise noted, each option is recognized by the commands: convert and mogrify.

    -

    -adaptive-blur radius[xsigma]

    +

    -adaptive-blur radius[xsigma]

    Adaptively blur pixels, with decreasing effect near edges.

    @@ -70,7 +70,7 @@ defaults to 1.

    -

    -adaptive-resize geometry

    +

    -adaptive-resize geometry

    Resize the image using data-dependent triangulation.

    @@ -82,7 +82,7 @@ Offsets, if present in the geometry string, are ignored, and the -gravity option has no effect.

    -

    -adaptive-sharpen radius[xsigma]

    +

    -adaptive-sharpen radius[xsigma]

    Adaptively sharpen pixels, with increasing effect near edges.

    @@ -92,7 +92,7 @@ href="command-line-options.html#gravity">-gravity option has no effect.

    defaults to 1.

    -

    -adjoin

    +

    -adjoin

    Join images into a single multi-image file.

    @@ -116,9 +116,9 @@ strings, such as '%d' or '%03d', are familiar to those who have used the standard printf()' C-library function. As an example, the command

    -
    +
    
     convert logo: rose: -morph 15 my%02dmorph.jpg
    -
    +

    will create a sequence of 17 images (the two given plus 15 more created by -morph), named: my00morph.jpg, my01morph.jpg, @@ -135,7 +135,7 @@ save to multiple files, if any of the following conditions exist...

    -

    -affine +

    -affine sx,rx,ry,sy[,tx,ty]

    @@ -178,23 +178,23 @@ href="command-line-options.html#distort">-distort method 'Affineprojec information

    -
    +
    
     -affine sx,0,0,sy
    -
    +

    Translation by a displacement (tx, ty) is accomplished like so:

    -
    +
    
     -affine 1,0,0,1,tx,ty
    -
    +

    Rotate clockwise about the origin (the upper left-hand corner) by an angle a by letting c = cos(a), s = sin(a), and using the following.

    -
    +
    
     -affine c,s,-s,c
    -
    +

    The cumulative effect of a sequence of -affine transformations can be accomplished by instead by a single matrix determinant has a sufficiently small absolute value it is rejected.

    -

    -alpha type

    +

    -alpha type

    Gives control of the alpha/matte channel of an image.

    @@ -213,74 +213,74 @@ matrix determinant has a sufficiently small absolute value it is rejected.

    Used to set a flag on an image indicating whether or not to use existing alpha channel data, to create an alpha channel, or to perform other operations on the alpha channel. Choose the argument type from the list below.

    -
    -
    Activate
    -
    +
    +
    Activate
    +
    Enable the image's transparency channel. Note normally Set should be used instead of this, unless you specifically need to preserve existing (but specifically turned Off) transparency channel.
    -
    Associate
    -
    +
    Associate
    +
    associate the alpha channel with the image.
    -
    Deactivate
    -
    +
    Deactivate
    +
    Disables the image's transparency channel. Does not delete or change the existing data, just turns off the use of that data.
    -
    Disassociate
    -
    +
    Disassociate
    +
    disassociate the alpha channel from the image.
    -
    Set
    -
    +
    Set
    +
    Activates the alpha/matte channel. If it was previously turned off then it also resets the channel to opaque. If the image already had the alpha channel turned on, it will have no effect.
    -
    Opaque
    -
    +
    Opaque
    +
    Enables the alpha/matte channel and forces it to be fully opaque.
    -
    Transparent
    -
    +
    Transparent
    +
    Activates the alpha/matte channel and forces it to be fully transparent. This effectively creates a fully transparent image the same size as the original and with all its original RGB data still intact, but fully transparent.
    -
    Extract
    -
    +
    Extract
    +
    Copies the alpha channel values into all the color channels and turns 'Off' the the image's transparency, so as to generate a grayscale mask of the image's shape. The alpha channel data is left intact just deactivated. This is the inverse of 'Copy'.
    -
    Copy
    -
    +
    Copy
    +
    Turns 'On' the alpha/matte channel, then copies the grayscale intensity of the image, into the alpha channel, converting a grayscale mask into a transparent shaped mask ready to be colored appropriately. The color channels are not modified.
    -
    Shape
    -
    +
    Shape
    +
    As per 'Copy' but also colors the resulting shape mask with the current background color. That is the RGB color channels is replaced, with appropriate alpha shape.
    -
    Remove
    -
    +
    Remove
    +
    Composite the image over the background color.
    -
    Background
    -
    +
    Background
    +
    Set any fully-transparent pixel to the background color, while leaving it fully-transparent. This can make some image file formats, such as PNG, smaller as the RGB values of transparent pixels are more uniform, @@ -294,7 +294,7 @@ same as "-alpha Off" Set" and not "-alpha On".

    -

    +

    -annotate degrees text
    -annotate XdegreesxYdegrees text
    -annotate XdegreesxYdegrees {+-}tx{+-}ty text
    -annotate {+-}tx{+-}ty text

    @@ -330,7 +330,7 @@ is of the form '@mytext.txt', the text is read from the file formatting characters are recognized.

    -

    -antialias

    +

    -antialias

    Enable/Disable of the rendering of anti-aliasing pixels when drawing fonts and lines.

    @@ -342,7 +342,7 @@ an image to just the colors being directly drawn. That is, no mixed colors are added when drawing such objects.

    -

    -append

    +

    -append

    Join current images vertically or horizontally.

    @@ -358,7 +358,7 @@ href="command-line-options.html#gravity">-gravity setting.

    -

    -attenuate value

    +

    -attenuate value

    Lessen (or intensify) when adding noise to an image.

    @@ -366,7 +366,7 @@ href="command-line-options.html#gravity">-gravity setting.

    If unset the value is equivalent to 1.0, or a maximum noise addition

    -

    -authenticate password

    +

    -authenticate password

    Decrypt a PDF with a password.

    @@ -380,7 +380,7 @@ and -decipher.

    -

    -auto-gamma

    +

    -auto-gamma

    Automagically adjust gamma level of image.

    @@ -405,7 +405,7 @@ together by the same gamma value, preserving colors.

    -

    -auto-level

    +

    -auto-level

    Automagically adjust color levels of image.

    @@ -438,7 +438,7 @@ transparency.

    -

    -auto-orient

    +

    -auto-orient

    adjusts an image so that its orientation is suitable for viewing (i.e. top-left orientation).

    @@ -456,7 +456,7 @@ href="command-line-options.html#auto-orient" >-auto-orient operator will do
    -

    -average

    +

    -average

    Average a set of images.

    @@ -465,7 +465,7 @@ href="command-line-options.html#auto-orient" >-auto-orient operator will do
    -

    -backdrop

    +

    -backdrop

    Display the image centered on a backdrop.

    @@ -476,7 +476,7 @@ specified as the background color. The color is specified using the format described under the -fill option.

    -

    -background color

    +

    -background color

    Set the background color.

    @@ -486,7 +486,7 @@ href="command-line-options.html#fill">-fill option. The default background c specified or found in the image) is white.

    -

    -bench iterations

    +

    -bench iterations

    Measure performance.

    @@ -496,21 +496,21 @@ consider the following command and its output. Modify the benchmark with the -duration to run the benchmark for a fixed number of seconds and -concurrent to run the benchmark in parallel (requires the OpenMP feature).

    -
    +
    
     -> convert logo: -resize 200% -bench 5 logo.png
     Performance[1]: 5i 1.344ips 1.000e 3.710u 0:03.720
     Performance[2]: 5i 1.634ips 0.549e 3.890u 0:03.060
     Performance[3]: 5i 2.174ips 0.618e 3.190u 0:02.300
     Performance[4]: 5i 1.678ips 0.555e 3.810u 0:02.980
     Performance[4]: 5i 0.875657ips 6.880u 0:05.710
    -
    +

    In this example, 5 iterations were completed at 2.174 iterations per second, using 3 threads and 3.190 seconds of the user allotted time, for a total elapsed time of 2.300 seconds.

    -

    -bias value{%}

    +

    -bias value{%}

    Add bias when convolving an image.

    @@ -537,13 +537,13 @@ href="http://en.wikipedia.org/wiki/High_dynamic_range_imaging">Wikipedia entry.

    -

    -black-point-compensation

    +

    -black-point-compensation

    Use black point compensation.

    -

    -black-threshold value{%}

    +

    -black-threshold value{%}

    Force to black all pixels below the threshold while leaving all pixels at or above the threshold unchanged.

    @@ -554,7 +554,7 @@ desired ‑channel value. S
    -

    -blend geometry

    +

    -blend geometry

    blend an image into another by the given absolute value or percent.

    @@ -568,13 +568,13 @@ the background image is weighted by the exact opposite amount. That is a
    -

    -blue-primary x,y

    +

    -blue-primary x,y

    Set the blue chromaticity primary point.

    -

    -blue-shift factor

    +

    -blue-shift factor

    simulate a scene at nighttime in the moonlight. Start with a factor of 1.5

    @@ -582,7 +582,7 @@ the background image is weighted by the exact opposite amount. That is a
    -

    -blur radius
    -blur radiusxsigma

    +

    -blur radius
    -blur radiusxsigma

    Reduce image noise and reduce detail levels.

    @@ -618,7 +618,7 @@ pixels which are outside the image proper are blurred into the final result.
    -

    -border geometry

    +

    -border geometry

    Surround the image with a border of color.

    @@ -629,31 +629,31 @@ ignored.

    As of IM 6.7.8-8, the geometry arguments behave as follows:

    -
    -
    value
    -
    value is added to both left/right and top/bottom
    -
    value-xx
    -
    value-x is added only to left/right and top/bottom are unchanged
    -
    xvalue-y
    -
    value-y is added only to top/bottom and left/right are unchanged
    -
    value-xxvalue-y
    -
    value-x is added to left/right and value-y added to top/bottom
    -
    value-xx0
    -
    value-x is added only to left/right and top/bottom are unchanged
    -
    0xvalue-y
    -
    value-y is added only to top/bottom and left/right are unchanged
    -
    value%
    -
    value % of width is added to left/right and value % of height is added to top/bottom
    -
    value-xx%
    -
    value-x % of width is added to left/right and to top/bottom
    -
    xvalue-y%
    -
    value-y % of height is added to top/bottom and to left/right
    -
    value-x%xvalue-y%
    -
    value-x % of width is added to left/right and value-y % of height is added to top/bottom
    -
    value-x%x0%
    -
    value-x % of width is added to left/right and top/bottom are unchanged
    -
    0%xvalue-y%
    -
    value-y % of height is added to top/bottom and left/right are unchanged
    +
    +
    value
    +
    value is added to both left/right and top/bottom
    +
    value-xx
    +
    value-x is added only to left/right and top/bottom are unchanged
    +
    xvalue-y
    +
    value-y is added only to top/bottom and left/right are unchanged
    +
    value-xxvalue-y
    +
    value-x is added to left/right and value-y added to top/bottom
    +
    value-xx0
    +
    value-x is added only to left/right and top/bottom are unchanged
    +
    0xvalue-y
    +
    value-y is added only to top/bottom and left/right are unchanged
    +
    value%
    +
    value % of width is added to left/right and value % of height is added to top/bottom
    +
    value-xx%
    +
    value-x % of width is added to left/right and to top/bottom
    +
    xvalue-y%
    +
    value-y % of height is added to top/bottom and to left/right
    +
    value-x%xvalue-y%
    +
    value-x % of width is added to left/right and value-y % of height is added to top/bottom
    +
    value-x%x0%
    +
    value-x % of width is added to left/right and top/bottom are unchanged
    +
    0%xvalue-y%
    +
    value-y % of height is added to top/bottom and left/right are unchanged

    Set the border color by preceding with the -bord functionality.

    -

    -bordercolor color

    +

    -bordercolor color

    Set the border color.

    @@ -680,13 +680,13 @@ functionality.

    The default border color is #DFDFDF, this shade of gray.

    -

    -borderwidth geometry

    +

    -borderwidth geometry

    Set the border width.

    -

    -brightness-contrast brightness
    -brightness-contrast brightness{xcontrast}{%}

    +

    -brightness-contrast brightness
    -brightness-contrast brightness{xcontrast}{%}

    Adjust the brightness and/or contrast of the image.

    @@ -724,13 +724,13 @@ totally black.

    symbol is no different than leaving it off.

    -

    -cache threshold

    +

    -cache threshold

    (This option has been replaced by the -limit option).

    -

    -canny radius
    -canny radiusxsigma{+lower-percent}{+upper-percent}

    +

    -canny radius
    -canny radiusxsigma{+lower-percent}{+upper-percent}

    Canny edge detector uses a multi-stage algorithm to detect a wide range of edges in the image.

    @@ -738,7 +738,7 @@ symbol is no different than leaving it off.

    The thresholds range from 0 to 100% (e.g. -canny 0x1+10%+30%) with {+lower-percent} < {+upper-percent}. If {+upper-percent} is increased but {+lower-percent} remains the same, lesser edge components will be detected, but their lengths will be the same. If {+lower-percent} is increased but {+upper-percent} is the same, the same number of edge components will be detected but their lengths will be shorter. The default thresholds are shown. The radiusxsigma controls a gaussian blur applied to the input image to reduce noise and smooth the edges.

    -

    -caption string

    +

    -caption string

    Assign a caption to an image.

    @@ -762,9 +762,9 @@ instead.

    For example,

    -
    +
    
     -caption "%m:%f %wx%h"  bird.miff
    -
    +

    produces an image caption of MIFF:bird.miff 512x480 (assuming that the image bird.miff has a width of 512 and a height of @@ -772,14 +772,14 @@ that the image bird.miff has a width of 512 and a height of

    -

    -cdl filename

    +

    -cdl filename

    color correct with a color decision list.

    Here is an example color correction collection:

    -
    +
    
     <?xml version="1.0" encoding="UTF-8"?>
     <ColorCorrectionCollection xmlns="urn:ASC:CDL:v1.2">
       <ColorCorrection id="cc06668">
    @@ -793,10 +793,10 @@ that the image bird.miff has a width of 512 and a height of
         </SATNode>
       </ColorCorrection>
     </ColorCorrectionCollection>
    -
    +
    -

    -channel type

    +

    -channel type

    Specify those image color channels to which subsequent operators are limited.

    @@ -814,13 +814,13 @@ abbreviated as a concatenation of the letters 'R', 'G' For example, to only select the Red and Blue channels you can either use

    -
    +
    
     -channel Red,Blue
    -
    +

    or you can use the short hand form

    -
    +
    
     -channel RB
    -
    +

    All the channels that are present in an image can be specified using the special channel type All. Not all operators are 'channel capable', @@ -924,50 +924,50 @@ the operator to apply the operation using alpha channels. The -clut operator is a good example of this.

    -

    -channel-fx expression

    +

    -channel-fx expression

    exchange, extract, or copy one or more image channels.

    The expression consists of one or more channels, either mnemonic or numeric (e.g. red or 0, green or 1, etc.), separated by certain operation symbols as follows:

    -
    +
    
     <=>  exchange two channels (e.g. red<=>blue)
     =>   copy one channel to another channel (e.g. red=>green)
     =    assign a constant value to a channel (e.g. red=50%)
     ,    write new image with channels in the specified order (e.g. red, green)
     ;    add a new output image for the next set of channel operations (e.g. red; green; blue)
     |    move to the next input image for the source of channel data (e.g. | gray=>alpha)
    -
    +

    For example, to create 3 grayscale images from the red, green, and blue channels of an image, use:

    -
    +
    
     -channel-fx "red; green; blue"
    -
    +

    A channel without an operation symbol implies separate (i.e, semicolon).

    Here we take an sRGB image and a grayscale image and inject the grayscale image into the alpha channel:

    -
    +
    
     convert wizard.png mask.pgm -channel-fx '| gray=>alpha' wizard-alpha.png
    -
    +

    Use a similar command to define a read mask:

    -
    +
    
     convert wizard.png mask.pgm -channel-fx '| gray=>read-mask' wizard-mask.png
    -
    +

    Add -debug pixel prior to the -channel-fx option to track the channel morphology.

    -

    -charcoal factor

    +

    -charcoal factor

    Simulate a charcoal drawing.

    -

    -chop geometry

    +

    -chop geometry

    Remove pixels from the interior of an image.

    @@ -992,13 +992,13 @@ sides of the image.

    href="command-line-options.html#splice">-splice that was given the same geometry and -gravity settings.

    -

    -clamp

    +

    -clamp

    set each pixel whose value is below zero to zero and any the pixel whose value is above the quantum range to the quantum range (e.g. 65535) otherwise the pixel value remains unchanged.

    -

    -clip

    +

    -clip

    Apply the clipping path if one is present.

    @@ -1007,9 +1007,9 @@ href="command-line-options.html#splice">-splice that was given the same For example, in the command

    -
    +
    
     convert cockatoo.tif -clip -negate negated.tif
    -
    +

    only the pixels within the clipping path are negated.

    @@ -1019,7 +1019,7 @@ delegate library is not present, the option is ignored.

    Use +clip to disable clipping for subsequent operations.

    -

    -clip-mask

    +

    -clip-mask

    Clip the image as defined by this mask.

    @@ -1037,7 +1037,7 @@ operation.

    Use +clip-mask to disable clipping for subsequent operations.

    -

    -clip-path id

    +

    -clip-path id

    Clip along a named path from the 8BIM profile.

    @@ -1047,7 +1047,7 @@ operation.

    Use +clip-path to disable clipping for subsequent operations.

    -

    -clone index(s)

    +

    -clone index(s)

    make a clone of an image (or images).

    @@ -1070,7 +1070,7 @@ in the image sequence, and is thus equivalent to using a argument of '−1'.

    -

    -clut

    +

    -clut

    Replace the channel values in the first image using each corresponding channel in the second image as a color lookup table.

    @@ -1116,7 +1116,7 @@ of a 3D color cube.

    -

    -coalesce

    +

    -coalesce

    Fully define the look of each frame of an GIF animation sequence, to form a 'film strip' animation.

    @@ -1136,7 +1136,7 @@ better than the original.

    -

    -colorize value

    +

    -colorize value

    Colorize the image by an amount specified by value using the color specified by the most recent -fill setting.

    @@ -1147,7 +1147,7 @@ a comma-delimited list of colorization values (e.g., -colorize 0,0,50).

    -

    -colormap type

    +

    -colormap type

    Define the colormap type.

    @@ -1165,7 +1165,7 @@ as they are defined. However, other clients may go technicolor when the image colormap is installed.

    -

    -colors value

    +

    -colors value

    Set the preferred number of colors in the image.

    @@ -1181,7 +1181,7 @@ the color reduction algorithm for more details.

    -

    -color-matrix matrix

    +

    -color-matrix matrix

    apply color correction to the image.

    @@ -1195,7 +1195,7 @@ CMYKA images) and offsets are normalized (divide Flash offset by 255).

    As an example, to add contrast to an image with offsets, try this command:

    -
    +
    
     convert kittens.jpg -color-matrix \
       " 1.5 0.0 0.0 0.0, 0.0, -0.157 \
         0.0 1.5 0.0 0.0, 0.0, -0.157 \
    @@ -1203,16 +1203,16 @@ convert kittens.jpg -color-matrix \
         0.0 0.0 0.0 1.0, 0.0,  0.0 \
         0.0 0.0 0.0 0.0, 1.0,  0.0 \
         0.0 0.0 0.0 0.0, 0.0,  1.0" kittens.png
    -
    +
    -

    -colorspace value

    +

    -colorspace value

    Set the image colorspace.

    Choices are:

    -
    +
    
     CMY          CMYK         Gray         HCL
     HCLp         HSB          HSI          HSL
     HSV          HWB          Lab          LCHab
    @@ -1221,13 +1221,13 @@ OHTA         Rec601YCbCr  Rec709YCbCr  RGB
     scRGB        sRGB         Transparent  xyY
     XYZ          YCbCr        YCC          YDbDr
     YIQ          YPbPr        YUV          Undefined
    -
    +

    To print a complete list of colorspaces, use -list colorspace.

    For a more accurate color conversion to or from the linear RGB, CMYK, or grayscale colorspaces, use the -profile option. Note, ImageMagick assumes the sRGB colorspace if the image format does not indicate otherwise. For colorspace conversion, the gamma function is first removed to produce linear RGB.

    -
    Name
    +
    @@ -1329,8 +1329,8 @@ YIQ YPbPr YUV Undefined

    Use the Undefined colorspace to identify multi-spectral images.

    -

    -combine

    -

    +combine colorspace

    +

    -combine

    +

    +combine colorspace

    Combine one or more images into a single image.

    @@ -1346,14 +1346,14 @@ href="command-line-options.html#separate">-separate, so long as the channel Thus, in the following example, the final image should be a copy of the original.

    -
    +
    
     convert original.png -channel RGB -separate sepimage.png
     convert sepimage-0.png sepimage-1.png sepimage-2.png -channel RGB \
       -combine imagecopy.png
    -
    +
    -

    -comment string

    +

    -comment string

    Embed a comment in an image.

    @@ -1377,42 +1377,42 @@ instead.

    For example,

    -
    +
    
     -comment "%m:%f %wx%h"  bird.miff
    -
    +

    produces an image comment of MIFF:bird.miff 512x480 (assuming that the image bird.miff has a width of 512 and a height of 480.

    -

    -compare

    +

    -compare

    mathematically and visually annotate the difference between an image and its reconstruction

    This is a convert version of "compare" for two same sized images. The syntax is as follows, but other metrics are allowed.

    -
    +
    
     convert image.png reference.png -metric RMSE -compare \ 
    difference.png -
    +

    To get the metric value use the string format "%[distortion]".

    -
    +
    
     convert image.png reference.png -metric RMSE -compare -format \
        "%[distortion]" info:
    -
    +
    -

    -complex operator

    +

    -complex operator

    perform complex mathematics on an image sequence

    Choose from these operators: -
    +
    
     add
     conjugate
     divide
    @@ -1420,12 +1420,12 @@ magnitude-phase
     multiply
     real-imaginary
     subtract
    -
    +

    Optionally specify the divide operator SNR with -define complex:snr=float.

    -

    -compose operator

    +

    -compose operator

    Set the type of image composition.

    @@ -1450,7 +1450,7 @@ command.

    -

    -composite

    +

    -composite

    Perform alpha composition on two images and an optional mask

    @@ -1480,7 +1480,7 @@ to 'false'.

    -

    -compress type

    +

    -compress type

    Use pixel compression specified by type when writing the image.

    @@ -1522,7 +1522,7 @@ sampling factor to be used by JPEG, MPEG, and YUV encoders for down-sampling the chroma channels.

    -

    -connected-components connectivity

    +

    -connected-components connectivity

    connected-components labeling detects connected regions in an image, choose from 4 or 8 way connectivity.

    @@ -1530,7 +1530,7 @@ the chroma channels.

    Use -define connected-components:verbose=true to output statistics associated with each unique label.

    -

    -contrast

    +

    -contrast

    Enhance or reduce the image contrast.

    @@ -1542,12 +1542,12 @@ contrast.

    For a more pronounced effect you can repeat the option:

    -
    +
    
     convert rose: -contrast -contrast rose_c2.png
    -
    +
    -

    -contrast-stretch black-point
    -contrast-stretch black-point{xwhite-point}{%}

    +

    -contrast-stretch black-point
    -contrast-stretch black-point{xwhite-point}{%}

    Increase the contrast in an image by stretching the range of intensity values.

    @@ -1581,7 +1581,7 @@ normalization of mathematical images.

    -

    -convolve kernel

    +

    -convolve kernel

    Convolve an image with a user-supplied convolution kernel.

    @@ -1611,13 +1611,13 @@ entry.

    -

    -copy geometry offset

    +

    -copy geometry offset

    copy pixels from one area of an image to another.

    -

    -crop geometry{@}{!}

    +

    -crop geometry{@}{!}

    Cut out one or more rectangular regions of the image.

    @@ -1669,7 +1669,7 @@ you are going to write to an image format such as PNG that supports an image offset.

    -

    -cycle amount

    +

    -cycle amount

    displace image colormap by amount.

    @@ -1679,7 +1679,7 @@ colormap entry is shifted.

    -

    -debug events

    +

    -debug events

    enable debug printout.

    @@ -1696,9 +1696,9 @@ a comma-separated list consisting of one or more of the following domains:

    For example, to log cache and blob events, use.

    -
    +
    
     convert -debug "Cache,Blob" rose: rose.png
    -
    +

    The User domain is normally empty, but developers can log user events in their private copy of ImageMagick.

    @@ -1718,7 +1718,7 @@ option.

    -

    -decipher filename

    +

    -decipher filename

    Decipher and restore pixels that were previously transformed by -encipher.

    @@ -1731,7 +1731,7 @@ Decipher an Image.

    -

    -deconstruct

    +

    -deconstruct

    find areas that has changed between images

    @@ -1750,7 +1750,7 @@ method 'compare-any'.

    -

    -define key{=value}...

    +

    -define key{=value}...

    add specific global settings generally used to control coders and image processing operations.

    @@ -1781,7 +1781,7 @@ is case-dependent.

    The following definitions are just some of the artifacts that are available:

    -
    Conversion of RGB to Other Color Spaces
    CMY
    C=QuantumRange−R
    +
    @@ -2254,9 +2254,9 @@ available:

    the PNG file. Because the list is processed from left to right, you can achieve this with a single define:

    -
    +
    
     -define png:include-chunk=none,gAMA
    -
    +

    As a special case, if the sRGB chunk is not excluded and the PNG encoder recognizes that the image contains the sRGB ICC profile, @@ -2278,9 +2278,9 @@ available:

    The -strip option does the equivalent of the following for PNG output:

    -
    +
    
     -define png:exclude-chunk=EXIF,iCCP,iTXt,sRGB,tEXt,zCCP,zTXt,date
    -
    +

    The default behavior is to include all known PNG ancillary chunks plus ImageMagick's private vpAg ("virtual page") chunk, @@ -2494,20 +2494,20 @@ available:

    For example, to create a postscript file that will render only the black pixels of a bilevel image, use:

    -
    +
    
     convert bilevel.tif -define ps:imagemask eps3:stencil.ps
    -
    +

    Set attributes of the image registry by prefixing the value with registry:. For example, to set a temporary path to put work files, use:

    -
    +
    
     -define registry:temporary-path=/data/tmp
    -
    +
    -

    -delay ticks
    -delay ticksxticks-per-second {<} {>}

    +

    -delay ticks
    -delay ticksxticks-per-second {<} {>}

    display the next image after pausing.

    @@ -2528,7 +2528,7 @@ a file redirection.

    -

    -delete indexes

    +

    -delete indexes

    delete the images specified by index, from the image sequence.

    @@ -2541,7 +2541,7 @@ a dash (e.g. 0-4). Separate indexes with a comma (e.g. 0,2). Use
    -

    -density width
    -density widthxheight

    +

    -density width
    -density widthxheight

    Set the horizontal and vertical resolution of an image for rendering to devices.

    @@ -2575,7 +2575,7 @@ to the pixels. To resize the image so that it is the same size at a different resolution, use the -resample option.

    -

    -depth value

    +

    -depth value

    depth of the image.

    @@ -2585,13 +2585,13 @@ to specify the depth of raw images whose depth is unknown such as GRAY, RGB, or CMYK, or to change the depth of any image after it has been read.

    -

    -descend

    +

    -descend

    obtain image by descending window hierarchy.

    -

    -deskew threshold{%}

    +

    -deskew threshold{%}

    straighten an image. A threshold of 40% works for most images.

    @@ -2600,19 +2600,19 @@ or CMYK, or to change the depth of any image after it has been read.

    true | false to auto crop the image.

    -

    -despeckle

    +

    -despeckle

    reduce the speckles within an image.

    -

    -direction type

    +

    -direction type

    render text right-to-left or left-to-right.

    -

    -displace horizontal-scale{%}{!}
    -displace horizontal-scalexvertical-scale{%}{!}

    +

    -displace horizontal-scale{%}{!}
    -displace horizontal-scalexvertical-scale{%}{!}

    shift image pixels as defined by a displacement map.

    @@ -2672,7 +2672,7 @@ overlaid areas will not be effected.

    -

    -display host:display[.screen]

    +

    -display host:display[.screen]

    Specifies the X server to contact.

    @@ -2681,7 +2681,7 @@ overlaid areas will not be effected.

    X server. See X(1).

    -

    -dispose method

    +

    -dispose method

    define the GIF disposal image setting for images that are being created or read in.

    @@ -2693,11 +2693,11 @@ animation is to be overlaid onto the display.

    Here are the valid methods:

    -
    -
    Undefined
    0: No disposal specified (equivalent to 'none').
    -
    None
    1: Do not dispose, just overlay next frame image.
    -
    Background
    2: Clear the frame area with the background color.
    -
    Previous
    3: Clear to the image prior to this frames overlay.
    +
    +
    Undefined
    0: No disposal specified (equivalent to 'none').
    +
    None
    1: Do not dispose, just overlay next frame image.
    +
    Background
    2: Clear the frame area with the background color.
    +
    Previous
    3: Clear to the image prior to this frames overlay.

    You can also use the numbers given above, which is what the GIF format @@ -2712,14 +2712,14 @@ resetting the layer disposal methods of images being read in.

    disposal method for images already in memory.

    -

    -dissimilarity-threshold value

    +

    -dissimilarity-threshold value

    maximum RMSE for subimage match (default 0.2).

    -

    -dissolve src_percent[xdst_percent]

    +

    -dissolve src_percent[xdst_percent]

    dissolve an image into another by the given percent.

    @@ -2735,7 +2735,7 @@ are given, each image are dissolved to the percentages given.

    images, you would need to use dissolve values of '50,100'.

    -

    -distort method arguments

    +

    -distort method arguments

    distort an image, using the given method and its required arguments.

    @@ -2746,7 +2746,7 @@ and meaning of the floating point values depends on the distortion methodChoose from these distortion types:

    -
    bmp:alpha=true|false include any alpha channel when writing in the BMP image format.
    +
    @@ -2765,13 +2765,13 @@ and meaning of the floating point values depends on the distortion method -
    -
    2:
    Scale Angle
    -
    3:
    X,Y Angle
    -
    4:
    X,Y Scale Angle
    -
    5:
    X,Y ScaleX,ScaleY Angle
    -
    6:
    X,Y Scale Angle NewX,NewY
    -
    7:
    X,Y ScaleX,ScaleY Angle NewX,NewY
    +
    +
    2:
    Scale Angle
    +
    3:
    X,Y Angle
    +
    4:
    X,Y Scale Angle
    +
    5:
    X,Y ScaleX,ScaleY Angle
    +
    6:
    X,Y Scale Angle NewX,NewY
    +
    7:
    X,Y ScaleX,ScaleY Angle NewX,NewY
    This is actually an alternative way of specifying a 2 dimensional linear @@ -2884,15 +2884,15 @@ and meaning of the floating point values depends on the distortion method -
    arc_angle
    -
    The angle over which to arc the image side-to-side
    -
    rotate_angle
    -
    Angle to rotate resulting image from vertical center
    -
    top_radius
    -
    Set top edge of source image at this radius
    -
    bottom_radius
    -
    Set bottom edge to this radius (radial scaling)
    +
    +
    arc_angle
    +
    The angle over which to arc the image side-to-side
    +
    rotate_angle
    +
    Angle to rotate resulting image from vertical center
    +
    top_radius
    +
    Set top edge of source image at this radius
    +
    bottom_radius
    +
    Set bottom edge to this radius (radial scaling)
    The resulting image is always resized to best fit the resulting image, @@ -3047,11 +3047,11 @@ perspective distortion of the built-in "rose:" image. Note how spaces were used to group the 4 sets of coordinate pairs, to make it easier to read and understand.

    -
    +
    
     convert rose:  -virtual-pixel black \
       -distort Perspective '0,0,0,0  0,45,0,45  69,0,60,10  69,45,60,35' \
        rose_3d_rotated.gif"
    -
    +

    If more that the required number of coordinate pairs are given for a distortion, the distortion method is 'least squares' fitted to produce the @@ -3072,11 +3072,11 @@ images become smaller (minified) in the output, which is very common when using 'perspective' distortion. For example here we view a infinitely tiled 'plane' all the way to the horizon.

    -
    +
    
     convert -size 90x90 pattern:checkerboard -normalize -virtual-pixel tile \
       -distort perspective  '0,0,5,45  89,0,45,46  0,89,0,89  89,89,89,89' \
        checks_tiled.jpg
    -
    +

    Note that a infinitely tiled perspective images involving the horizon can be very slow, because of the number of pixels that are compressed to generate @@ -3124,13 +3124,13 @@ lookup value. This is typically only used for debugging EWA resampling.

    -

    -distribute-cache port

    +

    -distribute-cache port

    launch a distributed pixel cache server.

    -

    -dither method

    +

    -dither method

    Apply a Riemersma or Floyd-Steinberg error diffusion dither to @@ -3165,7 +3165,7 @@ patterns, using uniform color maps, rather than specific color maps.

    -

    -draw string

    +

    -draw string

    Annotate an image with one or more graphic primitives.

    @@ -3176,30 +3176,30 @@ operations.

    The shape primitives:

    -
    -
    point
    x,y
    -
    line
    x0,y0 x1,y1
    -
    rectangle
    x0,y0 x1,y1
    -
    roundRectangle
    x0,y0 x1,y1 wc,hc
    -
    arc
    x0,y0 x1,y1 a0,a1
    -
    ellipse
    x0,y0 rx,ry a0,a1
    -
    circle
    x0,y0 x1,y1
    -
    polyline
    x0,y0 ... xn,yn
    -
    polygon
    x0,y0 ... xn,yn
    -
    bezier
    x0,y0 ... xn,yn
    -
    path
    specification
    -
    image
    operator x0,y0 w,h filename
    +
    +
    point
    x,y
    +
    line
    x0,y0 x1,y1
    +
    rectangle
    x0,y0 x1,y1
    +
    roundRectangle
    x0,y0 x1,y1 wc,hc
    +
    arc
    x0,y0 x1,y1 a0,a1
    +
    ellipse
    x0,y0 rx,ry a0,a1
    +
    circle
    x0,y0 x1,y1
    +
    polyline
    x0,y0 ... xn,yn
    +
    polygon
    x0,y0 ... xn,yn
    +
    bezier
    x0,y0 ... xn,yn
    +
    path
    specification
    +
    image
    operator x0,y0 w,h filename

    The text primitive:

    -
    -
    text
    x0,y0 string
    +
    +
    text
    x0,y0 string

    The text gravity primitive:

    -
    -
    gravity
    NorthWest, North, NorthEast, West, Center, East, SouthWest, South, or SouthEast
    +
    +
    gravity
    NorthWest, North, NorthEast, West, Center, East, SouthWest, South, or SouthEast

    The text gravity primitive only affects the placement of text and does not @@ -3209,19 +3209,19 @@ scope to the -draw option in which

    The transformation primitives:

    -
    -
    rotate
    degrees
    -
    translate
    dx,dy
    -
    scale
    sx,sy
    -
    skewX
    degrees
    -
    skewY
    degrees
    +
    +
    rotate
    degrees
    +
    translate
    dx,dy
    +
    scale
    sx,sy
    +
    skewX
    degrees
    +
    skewY
    degrees

    The pixel operation primitives:

    -
    -
    color
    x0,y0 method
    -
    matte
    x0,y0 method
    +
    +
    color
    x0,y0 method
    +
    matte
    x0,y0 method

    The shape primitives are drawn in the color specified by the preceding

    As an example, to define a circle centered at 100,100 that extends to 150,150 use:

    -
    +
    
     -draw 'circle 100,100 150,150'
    -
    +

    The Bezier primitive creates a spline curve and requires three or points to define its shape. The first and last points are the @@ -3291,10 +3291,10 @@ to draw complex curves, it is highly recommended either to use the path primitive or to draw multiple four-point bezier segments with the start and end knots of each successive segment repeated. For example:

    -
    +
    
     -draw 'bezier 20,50 45,100 45,0 70,50'
     -draw 'bezier 70,50 95,100 95,0 120,50'
    -
    +

    A path represents an outline of an object, defined in terms of moveto (set a new current point), lineto (draw a straight line), curveto (draw @@ -3309,9 +3309,9 @@ href="http://www.w3.org/TR/SVG/paths.html">Paths.)

    image keyword with the composite operator, image location, image size, and filename:

    -
    +
    
     -draw 'image SrcOver 100,100 225,225 image.jpg'
    -
    +

    You can use 0,0 for the image size, which means to use the actual dimensions found in the image header. Otherwise, it is scaled to the given @@ -3329,9 +3329,9 @@ single or double quotes.

    For example, the following annotates the image with Works like magick! for an image titled bird.miff.

    -
    +
    
     -draw "text 100,100 'Works like magick!' "
    -
    +

    See the -annotate option for another convenient way to annotate an image with text.

    @@ -3362,13 +3362,13 @@ reinitialized from the initial affine matrix.

    fill color (see -fill). Follow the pixel coordinate with a method:

    -
    +
    
     point
     replace
     floodfill
     filltoborder
     reset
    -
    +

    Consider the target pixel as that specified by your coordinate. The point method recolors the target pixel. The replace @@ -3402,7 +3402,7 @@ Vector Graphics format.

    -

    -duplicate count,indexes

    +

    -duplicate count,indexes

    duplicate an image one or more times.

    @@ -3415,19 +3415,19 @@ a range of images with a dash (e.g. 0-4). Separate indexes with a comma (e.g. image sequence.

    -

    -edge radius

    +

    -edge radius

    detect edges within an image.

    -

    -emboss radius

    +

    -emboss radius

    emboss an image.

    -

    -encipher filename

    +

    -encipher filename

    Encipher pixels for later deciphering by -decipher.

    @@ -3441,24 +3441,24 @@ Decipher an Image.

    -

    -encoding type

    +

    -encoding type

    specify the text encoding.

    Choose from

    -
    +
    
     AdobeCustom     AdobeExpert
     AdobeStandard   AppleRoman
     BIG5            GB2312
     Latin 2         None
     SJIScode        Symbol
     Unicode         Wansung
    -
    +
    -

    -endian type

    +

    -endian type

    Specify endianness (MSB or LSB) of the image.

    @@ -3469,14 +3469,14 @@ Unicode Wansung
    -

    -enhance

    +

    -enhance

    Apply a digital filter to enhance a noisy image.

    -

    -equalize

    +

    -equalize

    perform histogram equalization on the image channel-by-channel.

    @@ -3494,7 +3494,7 @@ channel. Here we have ... -colorspace OHTA -channel red -equalize -colorspace RGB ...

    -

    -evaluate operator value

    +

    -evaluate operator value

    Alter channel pixels by evaluating an arithmetic, relational, or logical expression.

    @@ -3511,7 +3511,7 @@ a "normalized pixel" is that number divided by the maximum normalized pixels are used, they are restored, following the other calculations, to the full range by multiplying by QuantumRange.)

    -
    Method Description
    +
    @@ -3636,7 +3636,7 @@ then the effective period is the half the QuantumRange.

    -

    -evaluate-sequence operator

    +

    -evaluate-sequence operator

    Alter channel pixels by evaluating an arithmetic, relational, or @@ -3647,7 +3647,7 @@ href="command-line-options.html#evaluate-sequence">-evaluate-sequence operat href="command-line-options.html#list">-list evaluate.

    -

    -extent geometry

    +

    -extent geometry

    Set the image size and offset.

    @@ -3662,15 +3662,15 @@ specify how to compose the image with the background, use Image Geometry for complete details about the geometry argument.

    -

    -extract geometry

    +

    -extract geometry

    Extract the specified area from image.

    @@ -3678,31 +3678,31 @@ convert input.jpg -resize 800x600 -background black -compose Copy \

    This option is most useful for extracting a subregion of a very large raw image. Note that these two commands are equivalent:

    -
    +
    
     convert -size 16000x16000 -depth 8 -extract 640x480+1280+960 \ 
       image.rgb image.png",
     convert -size 16000x16000 -depth 8 'image.rgb[640x480+1280+960]' \
       image.rgb image.png"
    -
    +

    If you omit the offsets, as in

    -
    +
    
     convert -size 16000x16000 -depth 8 -extract 640x480 \ 
       image.rgb image.png
    -
    +

    the image is resized to the specified dimensions instead, equivalent to:

    -
    +
    
     convert -size 16000x16000 -depth 8 -resize 640x480 image.rgb image.png
    -
    +

    See Image Geometry for complete details about the geometry argument.

    -

    -family fontFamily

    +

    -family fontFamily

    Set a font family for text.

    @@ -3717,12 +3717,12 @@ href="command-line-options.html#font">-font, -style, and -weight.

    -

    -features distance

    +

    -features distance

    display (co-occurrence matrix) texture measure features for each channel in the image in each of four directions (horizontal, vertical, left and right diagonals) for the specified distance.

    -
    +
    
     Angular Second Moment       Sum Entropy
     Contrast                    Entropy
     Correlation                 Difference Variance
    @@ -3730,10 +3730,10 @@ Sum of Squares Variance     Difference Entropy
     Inverse Difference Moment   Information Measure of Correlation 1
     Sum Average                 Information Measure of Correlation 2
     Sum Variance                Maximum Correlation Coefficient
    -
    +
    -

    -fft

    +

    -fft

    implements the forward discrete Fourier transform (DFT).

    @@ -3766,16 +3766,16 @@ formats that do not limit the color or compress the image. Thus, MIFF, TIF, PFM, EXR and PNG are the recommended image formats to use. All of these formats, except PNG support multi-frame images. So for example,

    -
    +
    
     convert image.png -fft fft_image.miff
    -
    +

    generates a magnitude image as fft_image.miff[0] and a phase image as fft_image.miff[1]. Similarly,

    -
    +
    
     convert image.png -fft fft_image.png
    -
    +

    generates a magnitude image as fft_image-0.png and a phase image as fft_image-1.png. If you prefer this representation, then you can @@ -3800,10 +3800,10 @@ function into what is usually called the spectrum. A log function is used to enhance the darker values more in comparison to the lighter values. This can be done, for example, as follows:

    -
    +
    
     convert fft_image.miff[0] -contrast-stretch 0 \
       -evaluate log 1000 fft_image_spectrum.png"
    -
    +

    where either -contrast-stretch 0 or -auto-level is used to scale the image to full dynamic @@ -3844,7 +3844,7 @@ href="http://www.fmwconcepts.com/imagemagick/fourier_transforms/fourier.html"

    -

    -fill color

    +

    -fill color

    color to use when filling a graphic primitive.

    @@ -3858,18 +3858,18 @@ the parentheses from being interpreted by your shell.

    For example,

    -
    +
    
     -fill blue
     -fill "#ddddff"
     -fill "rgb(255,255,255)"
    -
    +

    See -draw for further details.

    To print a complete list of color names, use the -list color option.

    -

    -filter type

    +

    -filter type

    Use this type of filter when resizing or distorting an image.

    @@ -3878,11 +3878,11 @@ the parentheses from being interpreted by your shell.

    operations such as -resize and -distort. For example you can use a simple resize filter such as:

    -
    +
    
     Point       Hermite       Cubic
     Box         Gaussian      Catrom
     Triangle    Quadratic     Mitchell
    -
    +

    The Bessel and Sinc filter is also provided (as well as a faster SincFast equivalent form). However these filters are @@ -3895,11 +3895,11 @@ function that the -filter settin using these functions will define a 'Windowed' filter, appropriate to the operator involved. Windowed filters include:

    -
    +
    
     Lanczos       Hamming       Parzen
     Blackman      Kaiser        Welsh
     Hanning       Bartlett      Bohman
    -
    +

    Also one special self-windowing filter is also provided Lagrange, which will automagically re-adjust its function depending @@ -3917,7 +3917,7 @@ filter option.

    use of these expert settings (see also -define and -set):-

    -
    +
    -define filter:blur=factor Scale the X axis of the filter (and its window). Use > 1.0 for @@ -4032,28 +4032,28 @@ href="command-line-options.html#set" >-set):-

    For example, to get a 8 lobe jinc windowed sinc filter (Genseng filter?):

    -
    +
    
     convert image.png \
       -filter sinc \
       -set filter:window=jinc \
       -set filter:lobes=8 \
       -resize 150%   image.jpg"
    -
    +

    Or a raw un-windowed Sinc filter with 4 lobes:

    -
    +
    
     convert image.png \
       -set filter:filter=sinc \
       -set filter:lobes=4 \
       -resize 150%   image.jpg"
    -
    +

    To extract the data for a raw windowing function, combine it with a 'Box' filter. For example the 'Welch parabolic windowing function.

    -
    +
    
     convert null: -define filter:filter=Box \
       -define filter:window=Welch \
       -define filter:support=1.0 \
    @@ -4062,7 +4062,7 @@ convert null: -define filter:filter=Box \
     gnuplot
       set grid
       plot \"window_welch.dat\" with lines
    -
    +

    Note that the use of expert options is provided for image processing experts who have studied and understand how resize filters work. Without this @@ -4072,14 +4072,14 @@ resizing.

    -

    -flatten

    +

    -flatten

    This is a simple alias for the -layers method "flatten".

    -

    -flip

    +

    -flip

    create a mirror image

    @@ -4089,7 +4089,7 @@ upside-down.

    -

    -floodfill {+-}x{+-}y color

    +

    -floodfill {+-}x{+-}y color

    floodfill the image with color at the specified offset.

    @@ -4110,7 +4110,7 @@ its 'color floodfill' drawing method.

    -

    -flop

    +

    -flop

    create a mirror image.

    @@ -4120,7 +4120,7 @@ a vertical mirror.

    -

    -font name

    +

    -font name

    set the font to use when annotating images with text, or creating labels.

    @@ -4139,7 +4139,7 @@ href="command-line-options.html#style">-style, and -

    -foreground color

    +

    -foreground color

    Define the foreground color for menus.", "display

    @@ -4150,7 +4150,7 @@ href="command-line-options.html#fill">-fill option.

    The default foreground color is black.

    -

    -format type

    +

    -format type

    the image format type.

    @@ -4168,7 +4168,7 @@ input image filename is image.gif, the output image filename becomes image.tiff.

    -

    -format string

    +

    -format string

    output formatted image characteristics.

    @@ -4178,7 +4178,7 @@ Properties for an explanation on how to specify the argument to this option.

    -

    -frame geometry

    +

    -frame geometry

    Surround the image with a border or beveled frame.

    @@ -4210,12 +4210,12 @@ affected by the -gravity option.
    -

    -frame

    +

    -frame

    include the X window frame in the imported image.

    -

    -function function parameters

    +

    -function function parameters

    Apply a function to channel values.

    @@ -4233,31 +4233,31 @@ ImageMagick 6.4.8−8.)

    Here, parameters is a comma-separated list of numerical values. The number of values varies depending on which function is selected. Choose the function from:

    -
    +
    
     Polynomial
     Sinusoid
     Arcsin
     Arctan
    -
    +

    To print a complete list of -function operators, use -list function. Descriptions follow.

    -
    -
    Polynomial
    -

    The Polynomial function takes an arbitrary number of parameters, +

    +
    Polynomial
    +

    The Polynomial function takes an arbitrary number of parameters, these being the coefficients of a polynomial, in decreasing order of degree. That is, entering

    -
    +
    
     -function Polynomial an,an-1,...a1,a0
    -
    +

    will invoke a polynomial function given by

    -
    +
    
     an un + an-1 un-1 + ··· a1 u + a0,
    -
    +

    where u is pixel's original normalized channel value.

    @@ -4268,7 +4268,7 @@ polynomials) of the -evaluate o href="command-line-options.html#level">-level operator also affects channels linearly. Some correspondences follow.

    - +
    @@ -4298,32 +4298,32 @@ polynomials can be used to fit any continuous curve to any degree of accuracy desired.

    -
    Sinusoid
    -
    +
    Sinusoid
    +

    The Sinusoid function can be used to vary the channel values sinusoidally by setting frequency, phase shift, amplitude, and a bias. These values are given as one to four parameters, as follows,

    -
    +
    
     -function Sinusoid freq,[phase,[amp,[bias]]]
    -
    +

    where phase is in degrees. (The domain [0,1] of the function corresponds to 0 through freq×360 degrees.) The result is that if a pixel's normalized channel value is originally u, its resulting normalized value is given by

    -
    +
    
     amp * sin(2*π* (freq * u + phase / 360)) + bias
    -
    +

    For example, the following generates a curve that starts and ends at 0.9 (when u=0 and 1, resp.), oscillating three times between .7−.2=.5 and .7+.2=.9.

    -
    +
    
     -function Sinusoid 3,-90,.2,.7
    -
    +

    The default values of amp and bias are both .5. The default for phase is 0.

    @@ -4332,7 +4332,7 @@ is 0.

    Cos of the -evaluate operator by allowing varying amplitude, phase and bias. The correspondence is as follows.

    -
    -evaluate Set value -function Polynomial value
    +
    @@ -4343,49 +4343,49 @@ varying amplitude, phase and bias. The correspondence is as follows.

    -evaluate Sin freq -function Sinusoid freq,0
    -
    ArcSin
    -
    +
    ArcSin
    +

    The ArcSin function generates the inverse curve of a Sinusoid, and can be used to generate cylindrical distortion and displacement maps. The curve can be adjusted relative to both the input values and output range of values.

    -
    +
    
     -function ArcSin width,[center,[range,[bias]]]
    -
    +

    with all values given in terms of normalized color values (0.0 for black, 1.0 for white). Defaulting to values covering the full range from 0.0 to 1.0 for bout input (width), and output (width) values. '1.0,0.5,1.0,0.5'

    -
    +
    
     range/π * asin( 2/width * ( u - center ) ) + bias
    -
    +
    -
    ArcTan
    -
    +
    ArcTan
    +

    The ArcTan function generates a curve that smooth crosses from limit values at infinities, though a center using the given slope value. All these values can be adjusted via the arguments.

    -
    +
    
     -function ArcTan slope,[center,[range,[bias]]]
    -
    +

    Defaulting to '1.0,0.5,1.0,0.5'.

    -
    +
    
     range/π * atan( slope*π * ( u - center ) ) + bias
    -
    +
    -

    -fuzz distance{%}

    +

    -fuzz distance{%}

    Colors within this distance are considered equal.

    @@ -4405,7 +4405,7 @@ appending % as a percentage of the maximum possible intensity (255,
    -

    -fx expression

    +

    -fx expression

    apply a mathematical expression to an image or image channels.

    @@ -4420,7 +4420,7 @@ option.

    -

    -gamma value

    +

    -gamma value

    level of gamma correction.

    @@ -4449,16 +4449,16 @@ is useful if the image is of a known gamma but not set as an image attribute display gamma; e.g., if your image is sRGB and you want to write a PNG gAMA chunk, use

    -
    +
    
     convert input.png +gamma .45455 output.png
    -
    +

    (0.45455 is 1/2.2)

    Note that gamma adjustments are also available via the -level operator.

    -

    -gaussian-blur radius
    -gaussian-blur radiusxsigma

    +

    -gaussian-blur radius
    -gaussian-blur radiusxsigma

    Blur the image with a Gaussian operator.

    @@ -4493,7 +4493,7 @@ pixels which are outside the image proper are blurred into the final result.
    -

    -geometry geometry

    +

    -geometry geometry

    Set the preferred size and location of the image.

    @@ -4501,7 +4501,7 @@ pixels which are outside the image proper are blurred into the final result.

    See Image Geometry for complete details about the geometry argument.

    -

    -gravity type

    +

    -gravity type

    Sets the current gravity suggestion for various other settings and options.

    @@ -4539,10 +4539,10 @@ that point. (In addition, the -gravi region itself, which is centered at the pixel coordinate (60,70). (See Image Geometry for complete details about the geometry argument.)

    -
    +
    
     convert image.png -gravity Center -region 10x10-40+20 \ 
       -negate output.png
    -
    +

    When used as an option to composite, -gravity gives the direction that the image gravitates @@ -4554,7 +4554,7 @@ within a tile. The default gravity is Center for this purpose.

    -

    -grayscale method

    +

    -grayscale method

    convert image to grayscale.

    @@ -4564,27 +4564,27 @@ convert the given image into a linear-grayscale image.

    For example, to convert an image to (linear) Rec709Luminance grayscale, type:

    -
    +
    
     convert in.png -grayscale Rec709Luminance out.png
    -
    +

    which is equivalent to:

    -
    +
    
     convert in.png -colorspace gray out.png
    -
    +

    Similarly, to convert an image to (non-linear) Rec709Luma grayscale, type:

    -
    +
    
     convert in.png -grayscale Rec709Luma out.png
    -
    +

    which is equivalent to:

    -
    +
    
     convert in.png -set colorspace RGB -colorspace gray out.png
    -
    +

    Note that a 'colorspace' intensity method will produce the same result regardless of the current colorpsace of the image. But a 'mathematical' @@ -4597,14 +4597,14 @@ will not effect other operations that may use that setting.

    -

    -green-primary x,y

    +

    -green-primary x,y

    green chromaticity primary point.

    -

    -hald-clut

    +

    -hald-clut

    apply a Hald color lookup table to the image.

    @@ -4614,9 +4614,9 @@ dimensions. Create it with the HALD: prefix (e.g. HALD:8). You can apply any color transformation to the Hald image and then use this option to apply the transform to the image.

    -
    +
    
     convert image.png hald.png -hald-clut transform.png
    -
    +

    This option provides a convenient method for you to use Gimp or Photoshop to make color corrections to the Hald CLUT image and subsequently apply them @@ -4635,19 +4635,19 @@ mapping.

    -

    -help

    +

    -help

    print usage instructions.

    -

    -highlight-color color

    +

    -highlight-color color

    when comparing images, emphasize pixel differences with this color.

    -

    -hough-lines widthxheight{+threshold}

    +

    -hough-lines widthxheight{+threshold}

    identify straight lines in the image (e.g. -hough-lines 9x9+195).

    @@ -4669,7 +4669,7 @@ mapping.

    Use -define hough-lines:accumulator=true to return the accumulator image in addition to the lines image.

    -

    -iconGeometry geometry

    +

    -iconGeometry geometry

    specify the icon geometry.

    @@ -4681,13 +4681,13 @@ handle negative offsets.

    See Image Geometry for complete details about the geometry argument.

    -

    -iconic

    +

    -iconic

    start in icon mode in X Windows", 'animate', 'display

    -

    -identify

    +

    -identify

    identify the format and characteristics of the image.

    @@ -4707,7 +4707,7 @@ amounts of image properties are displayed including image statistics, profiles, image histogram, and others.

    -

    -ift

    +

    -ift

    implements the inverse discrete Fourier transform (DFT).

    @@ -4723,15 +4723,15 @@ href="http://en.wikipedia.org/wiki/Fourier_transform">Fourier Transform,

    For example, depending upon the image format used to store the result of the -fft, one would use either

    -
    +
    
     convert fft_image.miff -ift fft_image_ift.png
    -
    +

    or

    -
    +
    
     convert fft_image-0.png fft_image-1.png -ift fft_image_ift.png
    -
    +

    The resulting image may need to be cropped due to padding introduced when the original image, prior to the -fft or By default the IFT is not normalized (and the FFT is). Use "-define fourier:normalize=inverse to explicitly normalize the IFT and unnormalize the FFT.

    -

    -immutable

    +

    -immutable

    make image immutable.

    -

    -implode factor

    +

    -implode factor

    implode image pixels about the center.

    -

    -insert index

    +

    -insert index

    insert the last image into the image sequence.

    @@ -4775,7 +4775,7 @@ other words, insert the last image, at the end of the current image sequence. Consequently this has no effect on the image sequence order.

    -

    -intensity method

    +

    -intensity method

    method to generate intensity value from pixel.

    @@ -4790,13 +4790,13 @@ converting images to -colorspace gray.

    the pixel values to linear-RGB or non-linear sRGB colorspace before being applied to calculate the final greyscale value.

    -
    -
    Rec601Luma
    0.298839R' + 0.586811G'+ 0.114350B'
    -
    Rec601Luminance
    0.298839R + 0.586811G + 0.114350B
    -
    Rec709Luma
    0.212656R' + 0.715158G' + 0.072186B'
    -
    Rec709Luminance
    0.212656R + 0.715158G + 0.072186B
    -
    Brightness
    max(R', G', B')
    -
    Lightness
    (min(R', G', B') + max(R', G', B')) / 2.0
    +
    +
    Rec601Luma
    0.298839R' + 0.586811G'+ 0.114350B'
    +
    Rec601Luminance
    0.298839R + 0.586811G + 0.114350B
    +
    Rec709Luma
    0.212656R' + 0.715158G' + 0.072186B'
    +
    Rec709Luminance
    0.212656R + 0.715158G + 0.072186B
    +
    Brightness
    max(R', G', B')
    +
    Lightness
    (min(R', G', B') + max(R', G', B')) / 2.0

    Note that the above R,G,B values is the image's linear-RGB values, while @@ -4806,10 +4806,10 @@ R',G',B' are sRGB non-linear values.

    current value in the images respective R,G,B channel regardless of what that is, or what colorspace the image is currently using.

    -
    -
    Average
    (R + G + B) / 3.0
    -
    MS
    (R^2 + G^2 + B^2) / 3.0
    -
    RMS
    sqrt( (R^2 + G^2 + B^2) / 3.0 )
    +
    +
    Average
    (R + G + B) / 3.0
    +
    MS
    (R^2 + G^2 + B^2) / 3.0
    +
    RMS
    sqrt( (R^2 + G^2 + B^2) / 3.0 )

    These methods are often used for other purposes, such as generating a @@ -4835,7 +4835,7 @@ function.

    Operators affected by the -intensity setting include:

    -
    +
    
     -adaptive-blur
     -adaptive-sharpen
     -black-threshold
    @@ -4851,10 +4851,10 @@ function.

    -threshold -tint -white-threshold -
    +
    -

    -intent type

    +

    -intent type

    use this type of rendering intent when managing the image color.

    @@ -4868,14 +4868,14 @@ Perceptual, Relative, Saturation.

    To print a complete list of rendering intents, use -list intent.

    -

    -interlace type

    +

    -interlace type

    the type of interlacing scheme.

    Choose from:

    -
    +
    
     none
     line
     plane
    @@ -4883,7 +4883,7 @@ partition
     JPEG
     GIF
     PNG
    -
    +

    This option is used to specify the type of interlacing scheme for raw image formats such as RGB or YUV.

    @@ -4904,7 +4904,7 @@ PNG or GIF or progressive JPEG image.

    interlace.

    -

    -interpolate type

    +

    -interpolate type

    Set the pixel color interpolation method to use when looking up a color based on a floating point or real value.

    @@ -4915,23 +4915,23 @@ image. This setting determines how the color is determined from the colors of the pixels surrounding that point. That is how to determine the color of a point that falls between two, or even four different colored pixels.

    -
    -
    integer
    -
    The color of the top-left pixel (floor function)
    -
    nearest-neighbor
    -
    The nearest pixel to the lookup point (rounded function)
    -
    average
    -
    The average color of the surrounding four pixels
    -
    bilinear
    -
    A double linear interpolation of pixels (the default)
    -
    mesh
    -
    Divide area into two flat triangular interpolations
    -
    bicubic
    -
    Fitted bicubic-spines of surrounding 16 pixels
    -
    spline
    -
    Direct spline curves (colors are blurred)
    -
    filter
    -
    Use resize -filter settings
    +
    +
    integer
    +
    The color of the top-left pixel (floor function)
    +
    nearest-neighbor
    +
    The nearest pixel to the lookup point (rounded function)
    +
    average
    +
    The average color of the surrounding four pixels
    +
    bilinear
    +
    A double linear interpolation of pixels (the default)
    +
    mesh
    +
    Divide area into two flat triangular interpolations
    +
    bicubic
    +
    Fitted bicubic-spines of surrounding 16 pixels
    +
    spline
    +
    Direct spline curves (colors are blurred)
    +
    filter
    +
    Use resize -filter settings

    This most important for distortion operators such as

    -

    -interline-spacing value

    +

    -interline-spacing value

    the space between two text lines.

    -

    -interword-spacing value

    +

    -interword-spacing value

    the space between two words.

    -

    -kerning value

    +

    -kerning value

    the space between two letters.

    -

    -kuwahara radius
    -kuwahara radiusxsigma

    +

    -kuwahara radius
    -kuwahara radiusxsigma

    edge preserving noise reduction filter.

    @@ -4972,7 +4972,7 @@ lookup for positions outside the boundaries of the image.

    -

    -label name

    +

    -label name

    assign a label to an image.

    @@ -4992,9 +4992,9 @@ Properties for details of the percent escape codes.

    For example,

    -
    +
    
     -label "%m:%f %wx%h"  bird.miff
    -
    +

    assigns an image label of MIFF:bird.miff 512x480 to the "bird.miff" image and whose width is 512 and height is 480, as it @@ -5013,7 +5013,7 @@ formatting characters are recognized.

    -

    -lat width
    -lat widthxheight{+-}offset{%}

    +

    -lat width
    -lat widthxheight{+-}offset{%}

    perform local adaptive threshold.

    @@ -5031,7 +5031,7 @@ the local background color, from which to separate the foreground color.

    -

    -layers method

    +

    -layers method

    handle multiple images forming a set of image layers or animation frames.

    @@ -5040,7 +5040,7 @@ the local background color, from which to separate the foreground color.

    which may represent either a set of overlaid 'image layers', a GIF disposal animation, or a fully-'coalesced' animation sequence.

    - +
    @@ -5303,7 +5303,7 @@ settings.

    -

    -level black_point{,white_point}{%}{,gamma}

    +

    -level black_point{,white_point}{%}{,gamma}

    adjust the level of image channels.

    @@ -5341,7 +5341,7 @@ values (0 is opaque) and not as 'alpha' values (0 is transparent).

    -

    -level-colors {black_color}{,}{white_color}

    +

    -level-colors {black_color}{,}{white_color}

    adjust the level of an image using the provided dash separated colors.

    @@ -5371,7 +5371,7 @@ color (+ form).

    -

    -limit type value

    +

    -limit type value

    Set the pixel cache resource limit.

    @@ -5389,13 +5389,13 @@ any limit is reached, ImageMagick fails in some fashion but attempts to take compensating actions, if possible. For example, the following limits memory:

    -
    +
    
     -limit memory 32MiB -limit map 64MiB
    -
    +

    Use -list resource to list the current limits. For example, our system shows these limits:

    -
    +
    
     -> identify -list resource
     Resource limits:
       Width: 100MP
    @@ -5408,7 +5408,7 @@ Resource limits:
       Thread: 12
       Throttle: 0
       Time: unlimited
    -
    +

    Requests for pixel storage to keep intermediate images are satisfied by one of three resource categories: in-memory pool, memory-mapped files pool, and @@ -5441,9 +5441,9 @@ example, assume you have a web interface that processes images uploaded from the Internet. To assure ImageMagick does not exceed 10MiB of memory you can simply set the area limit to 10MiB:

    -
    +
    
     -limit area 10MB
    -
    +

    Now whenever a large image is processed, the pixels are automagically cached to disk instead of memory. This of course implies that large images @@ -5452,9 +5452,9 @@ be an order of magnitude faster than on disk. Because your web site users might inadvertently upload a huge image to process, you should set a disk limit as well:

    -
    +
    
     -limit area 10MB -limit disk 500MB
    -
    +

    Here ImageMagick stops processing if an image requires more than 500MB of disk storage.

    @@ -5479,7 +5479,7 @@ Storage and Resource Requirements on the Architecture page.

    -

    -linear-stretch black-point
    -linear-stretch black-point{xwhite-point}{%}

    +

    -linear-stretch black-point
    -linear-stretch black-point{xwhite-point}{%}

    Linear with saturation stretch.

    @@ -5504,13 +5504,13 @@ normalization of mathematical images.

    -

    -linewidth

    +

    -linewidth

    the line width for subsequent draw operations.

    -

    -liquid-rescale geometry

    +

    -liquid-rescale geometry

    rescale image with seam-carving.

    @@ -5518,12 +5518,12 @@ normalization of mathematical images.

    See Image Geometry for complete details about the geometry argument.

    -

    -list type

    +

    -list type

    Print a list of supported arguments for various options or settings. Choose from these list types:

    -
    +
    
     Align
     Alpha
     Boolean
    @@ -5594,18 +5594,18 @@ Type
     Units
     Validate
     VirtualPixel
    -
    +

    These lists vary depending on your version of ImageMagick. Use "-list list" to get a complete listing of all the "-list" arguments available:

    -
    +
    
     identify -list list
    -
    +
    -

    -log string

    +

    -log string

    Specify format for debug log.

    @@ -5616,31 +5616,31 @@ href="command-line-options.html#debug">-debug option is active.

    You can display the following components by embedding special format characters:

    -
    -
    %d
    domain
    -
    %e
    event
    -
    %f
    function
    -
    %l
    line
    -
    %m
    module
    -
    %p
    process ID
    -
    %r
    real CPU time
    -
    %t
    wall clock time
    -
    %u
    user CPU time
    -
    %%
    percent sign
    -
    \n
    newline
    -
    \r
    carriage return
    +
    +
    %d
    domain
    +
    %e
    event
    +
    %f
    function
    +
    %l
    line
    +
    %m
    module
    +
    %p
    process ID
    +
    %r
    real CPU time
    +
    %t
    wall clock time
    +
    %u
    user CPU time
    +
    %%
    percent sign
    +
    \n
    newline
    +
    \r
    carriage return

    For example:

    -
    +
    
     convert -debug coders -log "%u %m:%l %e" in.gif out.png
    -
    +

    The default behavior is to print all of the components.

    -

    -loop iterations

    +

    -loop iterations

    add Netscape loop extension to your GIF animation.

    @@ -5650,34 +5650,34 @@ otherwise the animation repeats itself up to iterations times.

    -

    -lowlight-color color

    +

    -lowlight-color color

    when comparing images, de-emphasize pixel differences with this color.

    -

    -magnify

    +

    -magnify

    double the size of the image with pixel art scaling.

    -

    -map type

    +

    -map type

    Display image using this type.

    Choose from these Standard Colormap types:

    -
    +
    
     best
     default
     gray
     red
     green
     blue
    -
    +

    The X server must support the Standard Colormap you choose, otherwise an error occurs. Use list as @@ -5686,25 +5686,25 @@ the type and display searches the list of colormap types in

    -

    -map components

    +

    -map components

    pixel map.

    Here are the valid components of a map:

    -
    -
    r
    red pixel component
    -
    g
    green pixel component
    -
    b
    blue pixel component
    -
    a
    alpha pixel component (0 is transparent)
    -
    o
    opacity pixel component (0 is opaque)
    -
    i
    grayscale intensity pixel component
    -
    c
    cyan pixel component
    -
    m
    magenta pixel component
    -
    y
    yellow pixel component
    -
    k
    black pixel component
    -
    p
    pad component (always 0)
    +
    +
    r
    red pixel component
    +
    g
    green pixel component
    +
    b
    blue pixel component
    +
    a
    alpha pixel component (0 is transparent)
    +
    o
    opacity pixel component (0 is opaque)
    +
    i
    grayscale intensity pixel component
    +
    c
    cyan pixel component
    +
    m
    magenta pixel component
    +
    y
    yellow pixel component
    +
    k
    black pixel component
    +
    p
    pad component (always 0)

    You can specify as many of these components as needed in any order (e.g. @@ -5712,7 +5712,7 @@ bgr). The components can repeat as well (e.g. rgbr).

    -

    -mattecolor color

    +

    -mattecolor color

    Specify the color to be used with the -frame option.

    @@ -5723,7 +5723,7 @@ bgr). The components can repeat as well (e.g. rgbr).

    style="background-color: #bdbdbd;">this shade of gray.

    -

    -maximum

    +

    -maximum

    return the maximum intensity of an image sequence.

    @@ -5734,7 +5734,7 @@ style="background-color: #bdbdbd;">this shade of gray.

    name.

    -

    -median geometry

    +

    -median geometry

    apply a median filter to the image.

    @@ -5745,7 +5745,7 @@ name.

    name.

    -

    -mean-shift widthxheight{+distance{%}

    +

    -mean-shift widthxheight{+distance{%}

    image noise removal and color reduction/segmentation (e.g. -mean-shift 7x7+10%).

    @@ -5755,24 +5755,24 @@ name.

    The mean shift algorithm is iterative and thus slower the larger the window size. For each pixel, it gets all the pixels in the window centered at the pixel and excludes those that are outside the radius=sqrt((width-1)(height-1)/4) surrounding the pixel. From those pixels, it finds which of them are within the specified squared color distance from the current mean. It then computes a new x,y centroid from those coordinates and a new mean. This new x,y centroid is used as the center for a new window. This process is iterated until it converges and the final mean is then used to replace the original pixel value. It repeats this process for the next pixel, etc, until it processes all pixels in the image. Results are better when using other colorspaces rather than RGB. Recommend YIQ, YUV or YCbCr, which seem to give equivalent results.

    -

    -metric type

    +

    -metric type

    Output to STDERR a measure of the differences between images according to the type given metric.

    Choose from:

    -
    -
    AE
    absolute error count, number of different pixels (-fuzz effected)
    -
    FUZZ
    mean color distance
    -
    MAE
    mean absolute error (normalized), average channel error distance
    -
    MEPP
    mean error per pixel (normalized mean error, normalized peak error)
    -
    MSE
    mean error squared, average of the channel error squared
    -
    NCC
    normalized cross correlation
    -
    PAE
    peak absolute (normalized peak absolute)
    -
    PHASH
    perceptual hash for the sRGB and HCLp colorspaces. Specify an alternative colorspace with -define phash:colorspaces=colorspace,colorspace,...
    -
    PSNR
    peak signal to noise ratio
    -
    RMSE
    root mean squared (normalized root mean squared)
    +
    +
    AE
    absolute error count, number of different pixels (-fuzz effected)
    +
    FUZZ
    mean color distance
    +
    MAE
    mean absolute error (normalized), average channel error distance
    +
    MEPP
    mean error per pixel (normalized mean error, normalized peak error)
    +
    MSE
    mean error squared, average of the channel error squared
    +
    NCC
    normalized cross correlation
    +
    PAE
    peak absolute (normalized peak absolute)
    +
    PHASH
    perceptual hash for the sRGB and HCLp colorspaces. Specify an alternative colorspace with -define phash:colorspaces=colorspace,colorspace,...
    +
    PSNR
    peak signal to noise ratio
    +
    RMSE
    root mean squared (normalized root mean squared)

    Control the 'AE', or absolute count of pixels that are different, @@ -5791,7 +5791,7 @@ metric option.

    -

    -minimum

    +

    -minimum

    return the minimum intensity of an image sequence.

    @@ -5804,13 +5804,13 @@ name.

    -

    -mode geometry

    +

    -mode geometry

    make each pixel the \'predominant color\' of the neighborhood.'

    -

    -mode value

    +

    -mode value

    Mode of operation.

    @@ -5824,7 +5824,7 @@ ImageMagick installation.

    -

    -modulate brightness[,saturation,hue]

    +

    -modulate brightness[,saturation,hue]

    Vary the brightness, saturation, and hue of an image.

    @@ -5856,32 +5856,32 @@ href="command-line-options.html#modulate">-modulate 120,90.

    >option:modulate:colorspace' to specify which colorspace to modulate. Choose from HCL, HCLp, HSB, HSI, HSL (the default), HSV, HWB, or LCH (LCHuv). For example,

    -
    +
    
     convert image.png -set option:modulate:colorspace hsb -modulate 120,90 modulate.png
    -
    +
    -

    -moments

    +

    -moments

    report image moments and perceptual hash.

    -

    -monitor

    +

    -monitor

    monitor progress.

    -

    -monochrome

    +

    -monochrome

    transform the image to black and white.

    -

    -morph frames

    +

    -morph frames

    morphs an image sequence.

    @@ -5894,8 +5894,8 @@ argument determine how many images to interpolate between each image.

    -

    -morphology

    -

    -morphology method kernel

    +

    -morphology

    +

    -morphology method kernel

    apply a morphology method to the image.

    @@ -5906,14 +5906,14 @@ Morphology.

    -

    -mosaic

    +

    -mosaic

    an simple alias for the -layers method "mosaic"

    -

    -motion-blur radius
    -motion-blur radiusxsigma+angle

    +

    -motion-blur radius
    -motion-blur radiusxsigma+angle

    simulate motion blur.

    @@ -5930,12 +5930,12 @@ pixels which are outside the image proper are blurred into the final result.

    -

    -name

    +

    -name

    name an image.

    -

    -negate

    +

    -negate

    replace each pixel with its complementary color.

    @@ -5945,7 +5945,7 @@ black, yellow becomes blue, etc. Use
    -

    -noise geometry
    +

    -noise geometry
    +noise type

    @@ -5966,7 +5966,7 @@ which should be used in preference.

    Use +noise followed by a noise type to add noise to an image. Choose from these noise types:

    -
    +
    
     Gaussian
     Impulse
     Laplacian
    @@ -5974,7 +5974,7 @@ Multiplicative
     Poisson
     Random
     Uniform
    -
    +

    The amount of noise added can be controlled by the -attenuate setting. If unset the value is @@ -5990,7 +5990,7 @@ added to an image.

    -

    -normalize

    +

    -normalize

    Increase the contrast in an image by stretching the range of intensity values.

    @@ -6017,7 +6017,7 @@ that is better suited to mathematically generated images.

    -

    -opaque color

    +

    -opaque color

    change this color to the fill color within the image.

    @@ -6040,7 +6040,7 @@ href="command-line-options.html#channel">-channel to enable alpha channel ha
    -

    -ordered-dither threshold_map{,level...}

    +

    -ordered-dither threshold_map{,level...}

    dither the image using a pre-defined ordered dither threshold map specified, and a uniform color map with the @@ -6048,7 +6048,7 @@ given number of levels per color channel.

    You can choose from these standard threshold maps:

    -
    +
    
     threshold   1x1   Threshold 1x1 (non-dither)
     checks      2x1   Checkerboard 2x1 (dither)
     o2x2        2x2   Ordered 2x2 (dispersed)
    @@ -6068,7 +6068,7 @@ c6x6b       c6x6  Circles 6x6 (black)
     c6x6w             Circles 6x6 (white)
     c7x7b       c7x7  Circles 7x7 (black)
     c7x7w             Circles 7x7 (white)
    -
    +

    The threshold generated a simple 50% threshold of the image. This could be used with level to do the equivalent of

    -

    -orient image orientation

    +

    -orient image orientation

    specify orientation of a digital camera image.

    Choose from these orientations:

    -
    +
    
     bottom-left    right-top
     bottom-right   top-left
     left-bottom    top-right
     left-top       undefined
     right-bottom
    -
    +

    To print a complete list of orientations, use the -list orientation option.

    -

    -page geometry
    +

    -page geometry
    -page media[offset][{^!<>}]
    +page

    @@ -6136,45 +6136,45 @@ href="command-line-options.html#page">-page Letter+43+43).

    Use media as shorthand to specify the dimensions (widthxheight) of the PostScript page in dots per inch or a TEXT page in pixels. The choices for a PostScript page are:

    -
    -
    11x17
    792 x 1224
    -
    Ledger
    1224 x 792
    -
    Legal
    612 x 1008
    -
    Letter
    612 x 792
    -
    LetterSmall
    612 x 792
    -
    ArchE
    2592 x 3456
    -
    ArchD
    1728 x 2592
    -
    ArchC
    1296 x 1728
    -
    ArchB
    864 x 1296
    -
    ArchA
    648 x 864
    -
    A0
    2380 x 3368
    -
    A1
    1684 x 2380
    -
    A2
    1190 x 1684
    -
    A3
    842 x 1190
    -
    A4
    595 x 842
    -
    A4Small
    595 x 842
    -
    A5
    421 x 595
    -
    A6
    297 x 421
    -
    A7
    210 x 297
    -
    A8
    148 x 210
    -
    A9
    105 x 148
    -
    A10
    74 x 105
    -
    B0
    2836 x 4008
    -
    B1
    2004 x 2836
    -
    B2
    1418 x 2004
    -
    B3
    1002 x 1418
    -
    B4
    709 x 1002
    -
    B5
    501 x 709
    -
    C0
    2600 x 3677
    -
    C1
    1837 x 2600
    -
    C2
    1298 x 1837
    -
    C3
    918 x 1298
    -
    C4
    649 x 918
    -
    C5
    459 x 649
    -
    C6
    323 x 459
    -
    Flsa
    612 x 936
    -
    Flse
    612 x 936
    -
    HalfLetter
    396 x 612
    +
    +
    11x17
    792 x 1224
    +
    Ledger
    1224 x 792
    +
    Legal
    612 x 1008
    +
    Letter
    612 x 792
    +
    LetterSmall
    612 x 792
    +
    ArchE
    2592 x 3456
    +
    ArchD
    1728 x 2592
    +
    ArchC
    1296 x 1728
    +
    ArchB
    864 x 1296
    +
    ArchA
    648 x 864
    +
    A0
    2380 x 3368
    +
    A1
    1684 x 2380
    +
    A2
    1190 x 1684
    +
    A3
    842 x 1190
    +
    A4
    595 x 842
    +
    A4Small
    595 x 842
    +
    A5
    421 x 595
    +
    A6
    297 x 421
    +
    A7
    210 x 297
    +
    A8
    148 x 210
    +
    A9
    105 x 148
    +
    A10
    74 x 105
    +
    B0
    2836 x 4008
    +
    B1
    2004 x 2836
    +
    B2
    1418 x 2004
    +
    B3
    1002 x 1418
    +
    B4
    709 x 1002
    +
    B5
    501 x 709
    +
    C0
    2600 x 3677
    +
    C1
    1837 x 2600
    +
    C2
    1298 x 1837
    +
    C3
    918 x 1298
    +
    C4
    649 x 918
    +
    C5
    459 x 649
    +
    C6
    323 x 459
    +
    Flsa
    612 x 936
    +
    Flse
    612 x 936
    +
    HalfLetter
    396 x 612

    This option is also used to place subimages when writing to a multi-image @@ -6205,7 +6205,7 @@ present with a value other than NorthWest.

    Use +page to remove the page settings for an image.

    -

    -paint radius

    +

    -paint radius

    simulate an oil painting.

    @@ -6214,12 +6214,12 @@ present with a value other than NorthWest.

    neighborhood whose width is specified with radius.

    -

    -path path

    +

    -path path

    write images to this path on disk.

    -

    -pause seconds

    +

    -pause seconds

    Pause between animation loops

    @@ -6227,7 +6227,7 @@ neighborhood whose width is specified with radius.

    Pause for the specified number of seconds before repeating the animation.

    -

    -pause seconds

    +

    -pause seconds

    Pause between snapshots.

    @@ -6235,25 +6235,25 @@ neighborhood whose width is specified with radius.

    Pause for the specified number of seconds before taking the next snapshot.

    -

    -perceptible epsilon

    +

    -perceptible epsilon

    set each pixel whose value is less than |epsilon| to -epsilon or epsilon (whichever is closer) otherwise the pixel value remains unchanged.

    -

    -ping

    +

    -ping

    efficiently determine image characteristics.

    -

    -pointsize value

    +

    -pointsize value

    pointsize of the PostScript, OPTION1, or TrueType font.

    -

    -polaroid angle

    +

    -polaroid angle

    simulate a Polaroid picture.

    @@ -6261,7 +6261,7 @@ neighborhood whose width is specified with radius.

    Use +polaroid to rotate the image at a random angle between -15 and +15 degrees.

    -

    -poly "wt,exp ..."

    +

    -poly "wt,exp ..."

    combines multiple images according to a weighted sum of polynomials; one floating point weight (coefficient) and one floating point polynomial exponent (power) for each image expressed as comma separated pairs.

    @@ -6284,7 +6284,7 @@ neighborhood whose width is specified with radius.

    -

    -posterize levels

    +

    -posterize levels

    reduce the image to a limited number of color levels per channel.

    @@ -6293,13 +6293,13 @@ neighborhood whose width is specified with radius.

    visible effect.

    -

    -precision value

    +

    -precision value

    set the maximum number of significant digits to be printed.

    -

    -preview type

    +

    -preview type

    image preview type.

    @@ -6308,7 +6308,7 @@ visible effect.

    convert file.png -preview Gamma Preview:gamma.png). Choose from these previews:

    -
    +
    
     AddNoise
     Blur
     Brightness
    @@ -6338,20 +6338,20 @@ Spread
     Swirl
     Threshold
     Wave
    -
    +

    To print a complete list of previews, use the -list preview option.

    The default preview is JPEG.

    -

    -print string

    +

    -print string

    interpret string and print to console.

    -

    -process command

    +

    -process command

    process the image with a custom image filter.

    @@ -6362,7 +6362,7 @@ argN" where module is the name of the module to invoke (e.g. pass to the process module.

    -

    -profile filename
    +

    -profile filename
    +profile profile_name

    @@ -6388,9 +6388,9 @@ used. Instead, simply write the file to an image format such as APP1, 8BIM,

    For example, to extract the Exif data (which is stored in JPEG files in the APP1 profile), use.

    -
    +
    
     convert cockatoo.jpg profile.exif
    -
    +

    It is important to note that results may depend on whether or not the original image already has an included profile. Also, keep in mind that -

    +
    
     convert CMYK.tif -profile "CMYK.icc" -profile "RGB.icc" RGB.tiff
    -
    +

    Furthermore, since ICC profiles are not necessarily symmetric, extra conversion steps can yield unwanted results. CMYK profiles are often very @@ -6409,7 +6409,7 @@ asymmetric since they involve 3−>4 and 4−>3 channel mapping.

    -

    -quality value

    +

    -quality value

    JPEG/MIFF/PNG compression level.

    @@ -6441,12 +6441,12 @@ compression.

    If filter-type is 4 or less, the specified PNG filter-type is used for all scanlines:

    -
    -
    0
    none
    -
    1
    sub
    -
    2
    up
    -
    3
    average
    -
    4
    Paeth
    +
    +
    0
    none
    +
    1
    sub
    +
    2
    up
    +
    3
    average
    +
    4
    Paeth

    If filter-type is 5, adaptive filtering is used when quality is greater @@ -6486,7 +6486,7 @@ the PNG specification.

    For the BPG image format, quality/2 is the actual BPG compression level (range from 0 to 51).

    -

    -quantize colorspace

    +

    -quantize colorspace

    reduce colors using this colorspace.

    @@ -6499,13 +6499,13 @@ GIF, and PNG8.

    -

    -quiet

    +

    -quiet

    suppress all warning messages. Error messages are still reported.

    -

    -radial-blur angle

    +

    -radial-blur angle

    Blur around the center of the image.

    @@ -6519,7 +6519,7 @@ pixels which are outside the image proper are blurred into the final result.
    -

    -raise thickness

    +

    -raise thickness

    Lighten or darken image edges.

    @@ -6531,13 +6531,13 @@ a raised effect, otherwise use +raise< href="command-line-options.html#raise">-raise does not alter the dimensions of the image.

    -

    -random-threshold lowxhigh

    +

    -random-threshold lowxhigh

    Apply a random threshold to the image.

    -

    -read-mask +

    -read-mask filename

    @@ -6553,13 +6553,13 @@ grayscale values causing blended updates of the image the mask is attached to. but with strict boolean masking.

    -

    -red-primary x,y

    +

    -red-primary x,y

    Set the red chromaticity primary point.

    -

    -regard-warnings

    +

    -regard-warnings

    Pay attention to warning messages.

    @@ -6568,7 +6568,7 @@ but with strict boolean masking.

    as errors.

    -

    -remap filename

    +

    -remap filename

    Reduce the number of colors in an image to the colors used by this image.

    @@ -6600,7 +6600,7 @@ reduce the number of colors in an animated image sequence.

    Note, the remap image colormap has at most 8-bits of precision. Deeper color maps are automagically coalesced with other colors to meet this requirement.

    -

    -region geometry

    +

    -region geometry

    Set a region in which subsequent operations apply.

    @@ -6613,7 +6613,7 @@ in the same manner as in -crop.

    Use +region to remove any previously set regions.

    -

    -remote

    +

    -remote

    perform a remote operation.

    @@ -6625,7 +6625,7 @@ running simultaneously, use the wind specify which application to control.

    -

    -render

    +

    -render

    render vector operations.

    @@ -6634,7 +6634,7 @@ specify which application to control.

    This useful when saving the result to vector formats such as MVG or SVG.

    -

    -repage geometry

    +

    -repage geometry

    Adjust the canvas and offset information of the image.

    @@ -6661,7 +6661,7 @@ directly assign virtual canvas meta-data.

    -

    -resample horizontalxvertical

    +

    -resample horizontalxvertical

    Resample image to specified horizontal and vertical resolution.

    @@ -6682,7 +6682,7 @@ continue to treat the image using its former resolution, ignoring the image resolution specified in the standard file header.

    -

    -resize geometry

    +

    -resize geometry

    Resize an image.

    @@ -6699,26 +6699,26 @@ filter.

    coding. If your image is gamma-corrected, you can remove the nonlinear gamma correction, apply the transform, then restore it like this:

    -
    +
    
     convert portrait.jpg -gamma .45455 -resize 25% -gamma 2.2  \
       -quality 92 passport.jpg
    -
    +
    -

    -respect-parentheses

    +

    -respect-parentheses

    settings remain in effect until parenthesis boundary.

    -

    -reverse

    +

    -reverse

    Reverse the order of images in the current image list.

    -

    -roll {+-}x{+-}y

    +

    -roll {+-}x{+-}y

    roll an image vertically or horizontally by the amount given.

    @@ -6728,7 +6728,7 @@ A negative y offset rolls the image bottom-to-top.

    -

    -rotate degrees{<}{>}

    +

    -rotate degrees{<}{>}

    Apply Paeth image rotation (using shear operations) to the image.

    @@ -6749,7 +6749,7 @@ filled with the background color.

    -

    -sample geometry

    +

    -sample geometry

    minify / magnify the image with pixel subsampling and pixel replication, respectively.

    @@ -6786,7 +6786,7 @@ sampling sub-region.

    -

    -sampling-factor horizontal-factorxvertical-factor

    +

    -sampling-factor horizontal-factorxvertical-factor

    sampling factors used by JPEG or MPEG-2 encoder and YUV decoder/encoder.

    @@ -6800,7 +6800,7 @@ href="command-line-options.html#sampling-factor">-sampling-factor 4:2:2 to s downsampling method.

    -

    -scale geometry

    +

    -scale geometry

    minify / magnify the image with pixel block averaging and pixel replication, respectively.

    @@ -6822,7 +6822,7 @@ light conditions.

    -

    -scene value

    +

    -scene value

    set scene number.

    @@ -6830,7 +6830,7 @@ light conditions.

    This option sets the scene number of an image or the first image in an image sequence.

    -

    -screen

    +

    -screen

    specify the screen to capture.

    @@ -6842,13 +6842,13 @@ specified window, and more importantly, you can capture menus or other popups that are independent windows but appear over the specified window.

    -

    -seed

    +

    -seed

    seed a new sequence of pseudo-random numbers

    -

    -segment cluster-thresholdxsmoothing-threshold

    +

    -segment cluster-thresholdxsmoothing-threshold

    segment the colors of an image.

    @@ -6868,7 +6868,7 @@ of the color clusters is returned.

    -

    -selective-blur radius
    -selective-blur radiusxsigma{+threshold}

    +

    -selective-blur radius
    -selective-blur radiusxsigma{+threshold}

    Selectively blur pixels within a contrast threshold.

    @@ -6877,13 +6877,13 @@ of the color clusters is returned.

    contrast. The threshold may be expressed as a fraction of QuantumRange or as a percentage.

    -

    -separate

    +

    -separate

    separate an image channel into a grayscale image. Specify the channel with -channel.

    -

    -sepia-tone percent-threshold

    +

    -sepia-tone percent-threshold

    simulate a sepia-toned photo.

    @@ -6898,8 +6898,8 @@ tone.

    -

    -set key value

    -

    +set key

    +

    -set key value

    +

    +set key

    sets image attributes and properties for images in the current image sequence.

    @@ -6928,20 +6928,20 @@ using the options -comment, Format Percent Escapes expanded) to images as they are read in. For example:

    -
    +
    
     -> convert rose: -set comment 'Rose is a rose is a rose is a rose' rose.png
     identify -format %c rose.png
     Rose is a rose is a rose is a rose
    -
    +

    The set value can also make use of Format and Print Image Properties in the defined value. For example:

    -
    +
    
     -> convert rose: -set origsize '%wx%h' -resize 50% \
       -format 'Old size = %[origsize]  New size = %wx%h' info:
     Old size = 70x46  New size = 35x23
    -
    +

    Other well known 'properties' that are available include: 'date:create' and 'date:modify' and @@ -6957,17 +6957,17 @@ attribute.

    This option can also associate a colorspace or profile with your image. For example,

    -
    +
    
     convert image.psd -set profile ISOcoated_v2_eci.icc image-icc.psd
    -
    +

    Some 'properties' must be defined in a specific way to be used. For example only 'properties' prefixed with "filename:" can be used to modify the output filename of an image. For example

    -
    +
    
     convert rose: -set filename:mysize '%wx%h' 'rose_%[filename:mysize].png'
    -
    +

    If the setting value is prefixed with "option:" the setting will be saved as a global "Artifact" exactly as if it was set using the -

    +
    
     convert rose:  -set option:rosesize '%wx%h' -delete 0 \
       label:'%[rosesize]'   label_size_of_rose.gif"
    -
    +

    Note that Format Percent Escapes will only match a 'artifact' if the given key does not match an existing @@ -6993,9 +6993,9 @@ previously-formatted ancillary chunks into the output PNG file, using the commandline option as shown below or by setting the profile via a programming interface:

    -
    +
    
     convert in.png -set profile PNG-chunk-x:<filename> out.png
    -
    +

    where x is a location flag and filename is a file containing the chunk @@ -7009,13 +7009,13 @@ of the same type, then add a short unique string after the "x" to prevent subsequent profiles from overwriting the preceding ones, e.g.,

    -
    +
    
     convert in.png -set profile PNG-chunk-b01:file01 \ 
       -profile PNG-chunk-b02:file02 out.png
    -
    +
    -

    -shade azimuthxelevation

    +

    -shade azimuthxelevation

    shade the image using a distant light source.

    @@ -7025,13 +7025,13 @@ the position of the light source. Use the shading results as a grayscale image.

    -

    -shadow percent-opacity{xsigma}{+-}x{+-}y{%}

    +

    -shadow percent-opacity{xsigma}{+-}x{+-}y{%}

    simulate an image shadow.

    -

    -shared-memory

    @@ -7043,7 +7043,7 @@ and the display must support the MIT-SHM extension. Otherwise, this option is ignored. The default is True.

    -

    -sharpen radius
    -sharpen radiusxsigma

    +

    -sharpen radius
    -sharpen radiusxsigma

    sharpen the image.

    @@ -7051,7 +7051,7 @@ Otherwise, this option is ignored. The default is True.

    Use a Gaussian operator of the given radius and standard deviation (sigma).

    -

    -shave geometry

    +

    -shave geometry

    Shave pixels from the image edges.

    @@ -7064,7 +7064,7 @@ Offsets are ignored.

    See Image Geometry for complete details about the geometry argument.

    -

    -shear Xdegrees[xYdegrees]

    +

    -shear Xdegrees[xYdegrees]

    Shear the image along the x-axis and/or y-axis.

    @@ -7089,21 +7089,21 @@ important to note, since horizontal and vertical shears do not commute, i.e., the order matters in a sequence of shears. For example, the following two commands are not equivalent.

    -
    +
    
     convert logo: -shear 20x0 -shear 0x60 logo-sheared.png
     convert logo: -shear 0x60 -shear 20x0 logo-sheared.png
    -
    +

    The first of the two commands above is equivalent to the following, except for the amount of empty space created; the command that follows generates a smaller image, and so is a better choice in terms of time and space.

    -
    +
    
     convert logo: -shear 20x60 logo-sheared.png
    -
    +
    -

    -sigmoidal-contrast contrastxmid-point

    +

    -sigmoidal-contrast contrastxmid-point

    increase the contrast without saturating highlights or shadows.

    @@ -7131,7 +7131,7 @@ effects) of a true threshold, but with tapered gray-levels around the threshold mid-point.

    -

    -silent

    +

    -silent

    @@ -7140,7 +7140,7 @@ effects) of a true threshold, but with tapered gray-levels around the threshold by the import tool.

    -

    -similarity-threshold value

    +

    -similarity-threshold value

    minimum RMSE for subimage match.

    @@ -7148,7 +7148,7 @@ by the import tool.

    If this setting is used, then the search will stop as soon as it finds a match whose metric is less than or equal to the value. A partially filled second output image will result. Using a value of zero, will cause the search to stop at the first perfect match it finds. If this setting is left off, then the search will proceed to completion or as limited by -dissimilarity-threshold.

    -

    -size width[xheight][+offset]

    +

    -size width[xheight][+offset]

    set the width and height of the image.

    @@ -7162,16 +7162,16 @@ image or tell the number of colors in a MAP image file, (e.g. -size

    For Photo CD images, choose from these sizes:

    -
    +
    
     192x128
     384x256
     768x512
     1536x1024
     3072x2048
    -
    +
    -

    -sketch radius
    -sketch radiusxsigma+angle

    +

    -sketch radius
    -sketch radiusxsigma+angle

    simulate a pencil sketch.

    @@ -7181,7 +7181,7 @@ angle given is the angle toward which the image is sketched. That is the direction people would consider the object is coming from.

    -

    -smush offset

    +

    -smush offset

    appends an image sequence together ignoring transparency.

    @@ -7195,7 +7195,7 @@ direction people would consider the object is coming from.

    For zero offset and transparent images, the non-transparent parts of the two images will be aligned as close as possible without overlapping.

    -

    -snaps value

    +

    -snaps value

    Set the number of screen snapshots.

    @@ -7203,7 +7203,7 @@ direction people would consider the object is coming from.

    Use this option to grab more than one image from the X server screen, to create an animation sequence.

    -

    -solarize percent-threshold

    +

    -solarize percent-threshold

    negate all pixels above the threshold level.

    @@ -7214,32 +7214,32 @@ direction people would consider the object is coming from.

    exposing a photographic film to light during the development process.

    -

    -sparse-color method 'x,y color ...'

    +

    -sparse-color method 'x,y color ...'

    color the given image using the specified points of color, and filling the other intervening colors using the given methods.

    -
    -
    barycentric
    -
    three point triangle of color given 3 points. +
    +
    barycentric
    +
    three point triangle of color given 3 points. Giving only 2 points will form a linear gradient between those points. The gradient generated extends beyond the triangle created by those 3 points.
    -
    bilinear
    -
    Like barycentric but for 4 points. Less than 4 points +
    bilinear
    +
    Like barycentric but for 4 points. Less than 4 points fall back to barycentric.
    -
    voronoi
    -
    Simply map each pixel to the to nearest color point +
    voronoi
    +
    Simply map each pixel to the to nearest color point given. The result are polygonal 'cells' of solid color.
    -
    manhatten
    -
    Like voronoi, but resulting polygonal 'cells' are mapped to a fixed coordinate system.
    -
    shepards
    -
    Colors points biased on the ratio of inverse distance +
    manhatten
    +
    Like voronoi, but resulting polygonal 'cells' are mapped to a fixed coordinate system.
    +
    shepards
    +
    Colors points biased on the ratio of inverse distance squared. Generating spots of color in a sea of the average of colors.
    -
    inverse
    -
    Colors points biased on the ratio of inverse distance. +
    inverse
    +
    Colors points biased on the ratio of inverse distance. This generates sharper points of color rather than rounded spots of 'shepards' Generating spots of color in a sea of the average of colors.
    @@ -7267,7 +7267,7 @@ default value.

    -

    -splice geometry

    +

    -splice geometry

    Splice the current background color into the image.

    @@ -7289,7 +7289,7 @@ href="command-line-options.html#gravity">-gravity is later used with
    -

    -spread amount

    +

    -spread amount

    displace image pixels by a random amount.

    @@ -7301,26 +7301,26 @@ blend.

    The lookup is controlled by the -interpolate setting.

    -

    -statistic type geometry

    +

    -statistic type geometry

    replace each pixel with corresponding statistic from the neighborhood.

    Choose from these statistic types:

    -
    -
    Gradient
    maximum difference (max - min) value in neighborhood
    -
    Maximum
    maximum value per channel in neighborhood
    -
    Minimum
    minimum value per channel in neighborhood
    -
    Mean
    average value per channel in neighborhood
    -
    Median
    median value per channel in neighborhood
    -
    Mode
    mode (most frequent) value per channel in neighborhood
    -
    Nonpeak
    value just before or after the median value per channel in neighborhood
    -
    RMS
    root mean square value per channel in neighborhood
    -
    StandardDeviation
    standard deviation value per channel in neighborhood
    +
    +
    Gradient
    maximum difference (max - min) value in neighborhood
    +
    Maximum
    maximum value per channel in neighborhood
    +
    Minimum
    minimum value per channel in neighborhood
    +
    Mean
    average value per channel in neighborhood
    +
    Median
    median value per channel in neighborhood
    +
    Mode
    mode (most frequent) value per channel in neighborhood
    +
    Nonpeak
    value just before or after the median value per channel in neighborhood
    +
    RMS
    root mean square value per channel in neighborhood
    +
    StandardDeviation
    standard deviation value per channel in neighborhood
    -

    -stegano offset

    +

    -stegano offset

    hide watermark within an image.

    @@ -7331,7 +7331,7 @@ this information to recover the steganographic image (e.g. display -size 320x256+35 stegano:image.png).

    -

    -stereo +x{+y}

    +

    -stereo +x{+y}

    composite two images to create a red / cyan stereo anaglyph.

    @@ -7339,26 +7339,26 @@ this information to recover the steganographic image (e.g. display -size

    The left side of the stereo pair (second image) is saved as the red channel of the output image. The right side (first image) is saved as the green and blue channels. Red-green stereo glasses are required to properly view the stereo image.

    -

    -storage-type type

    +

    -storage-type type

    pixel storage type. Here are the valid types:

    -
    -
    char
    unsigned characters
    -
    double
    doubles
    -
    float
    floats
    -
    integer
    integers
    -
    long
    longs
    -
    quantum
    pixels in the native depth of your ImageMagick distribution
    -
    short
    unsigned shorts
    +
    +
    char
    unsigned characters
    +
    double
    doubles
    +
    float
    floats
    +
    integer
    integers
    +
    long
    longs
    +
    quantum
    pixels in the native depth of your ImageMagick distribution
    +
    short
    unsigned shorts

    Float and double types are normalized from 0.0 to 1.0 otherwise the pixels values range from 0 to the maximum value the storage type can support.

    -

    -stretch fontStretch

    +

    -stretch fontStretch

    Set a type of stretch style for fonts.

    @@ -7366,7 +7366,7 @@ values range from 0 to the maximum value the storage type can support.

    This setting suggests a type of stretch that ImageMagick should try to apply to the currently selected font family. Select fontStretch from the following.

    -
    +
    
     Any
     Condensed
     Expanded
    @@ -7377,7 +7377,7 @@ SemiCondensed
     SemiExpanded
     UltraCondensed
     UltraExpanded
    -
    +

    To print a complete list of stretch types, use -list stretch.

    @@ -7387,13 +7387,13 @@ href="command-line-options.html#font">-font, -style, and -weight.

    -

    -strip

    +

    -strip

    strip the image of any profiles, comments or these PNG chunks: bKGD,cHRM,EXIF,gAMA,iCCP,iTXt,sRGB,tEXt,zCCP,zTXt,date.

    -

    -stroke color

    +

    -stroke color

    color to use when stroking a graphic primitive.

    @@ -7403,7 +7403,7 @@ href="command-line-options.html#style">-style, and -draw for further details.

    -

    -strokewidth value

    +

    -strokewidth value

    set the stroke width.

    @@ -7411,7 +7411,7 @@ href="command-line-options.html#style">-style, and -draw for further details.

    -

    -style fontStyle

    +

    -style fontStyle

    Set a font style for text.

    @@ -7420,19 +7420,19 @@ href="command-line-options.html#style">-style, and -font, -family, -stretch, and -weight.

    -

    -subimage-search

    +

    -subimage-search

    search for subimage.

    @@ -7456,7 +7456,7 @@ sub-image the faster this search is.

    -

    -swap index,index

    +

    -swap index,index

    Swap the positions of two images in the image sequence.

    @@ -7466,7 +7466,7 @@ images in the current image sequence. Use -

    -swirl degrees

    +

    -swirl degrees

    swirl image pixels about the center.

    @@ -7474,7 +7474,7 @@ the last two images in the sequence.

    Degrees defines the tightness of the swirl.

    -

    -synchronize

    +

    -synchronize

    synchronize image to storage device.

    @@ -7485,13 +7485,13 @@ valid image file in the event of a system crash and early reporting if there is not enough disk space for the image pixel cache.

    -

    -taint

    +

    -taint

    Mark the image as modified.

    -

    -text-font name

    +

    -text-font name

    font for writing fixed-width text.

    @@ -7504,13 +7504,13 @@ OPTION1 font. For example, Courier.ttf is a TrueType font and x:fixed is OPTION1.

    -

    -texture filename

    +

    -texture filename

    name of texture to tile onto the image background.

    -

    -threshold value{%}

    +

    -threshold value{%}

    \ No newline at end of file + \ No newline at end of file diff --git a/www/command-line-processing.html b/www/command-line-processing.html index c5d933039..0c409d687 100644 --- a/www/command-line-processing.html +++ b/www/command-line-processing.html @@ -25,14 +25,13 @@ - - - + + + - + -
    (adsbygoogle = window.adsbygoogle || []).push({}); -
    +

    The Anatomy of the Command-line • Input Filename • Command-line Options • Output Filename

    The ImageMagick command-line tools can be as simple as this:

    -
    +
    
     magick image.jpg image.png
    -
    +

    Or it can be complex with a plethora of options, as in the following:

    -
    +
    
     magick label.gif +matte \
       \( +clone  -shade 110x90 -normalize -negate +clone  -compose Plus -composite \) \
       \( -clone 0 -shade 110x50 -normalize -channel BG -fx 0 +channel -matte \) \
       -delete 0 +swap  -compose Multiply -composite  button.gif");
    -
    +

    This example command is long enough that the command must be written across several lines, so we formatted it for clarity by inserting backslashes (\). The backslash is the Unix line-continuation character. In the Windows shell, use a carat character (^) for line-continuation. We use the Unix style on these web pages, as above. Sometimes, however, the lines are wrapped by your browser if the browser window is small enough, but the command-lines, shown in white, are still intended to be typed as one line. Line continuation characters need not be entered. The parentheses that are escaped above using the backslash are not escaped in Windows. There are some other differences between Windows and Unix (involving quotation marks, for instance), but we'll discuss some of those issues later, as they arise.

    @@ -94,7 +94,7 @@ magick label.gif +matte \

    Given the complexity of the rendering, you might be surprised it is accomplished by a single command-line:

    -
    +
    
     magick -size 320x90 canvas:none -stroke snow4 -size 1x90 -tile gradient:white-snow4 \
       -draw 'roundrectangle 16, 5, 304, 85 20,40' +tile -fill snow \
       -draw 'roundrectangle 264, 5, 304, 85  20,40' -tile gradient:chartreuse-green \
    @@ -107,13 +107,13 @@ magick -size 320x90 canvas:none -stroke snow4 -size 1x90 -tile gradient:white-sn
       -background firebrick3 -shadow 80x3+3+3 \) +swap -background none -layers merge \) \
       -insert 0 -gravity center -append -background white -gravity center -extent 320x200 \
       cylinder_shaded.png
    -
    +

    In the next sections we dissect the anatomy of the ImageMagick command-line. Hopefully, after carefully reading and better understanding how the command-line works, you should be able to accomplish complex image-processing tasks without resorting to the sometimes daunting program interfaces.

    See Examples of ImageMagick Usage for additional help when using ImageMagick from the command-line.

    -

    The Anatomy of the Command-line

    +

    The Anatomy of the Command-line

    The ImageMagick command-line consists of

      @@ -134,7 +134,7 @@ magick -size 320x90 canvas:none -stroke snow4 -size 1x90 -tile gradient:white-sn

      You can find a detailed explanation of each of the constituent parts of the command-line in the sections that follow.

      -

      Input Filename

      +

      Input Filename

      ImageMagick extends the concept of an input filename to include:

        @@ -155,9 +155,9 @@ magick -size 320x90 canvas:none -stroke snow4 -size 1x90 -tile gradient:white-sn

        In Unix shells, certain characters such as the asterisk (*) and question mark (?) automagically cause lists of filenames to be generated based on pattern matches. This feature is known as globbing. ImageMagick supports filename globbing for systems, such as Windows, that does not natively support it. For example, suppose you want to convert 1.jpg, 2.jpg, 3.jpg, 4.jpg, and 5.jpg in your current directory to a GIF animation. You can conveniently refer to all of the JPEG files with this command:

        -
        +
        
         magick *.jpg images.gif
        -
        +

        Explicit Image Format

        Images are stored in a myriad of image formats including @@ -176,56 +176,56 @@ values. ImageMagick has no way to automagically determine the image format so we explicitly set one:

        -
        +
        
         magick -size 640x480 -depth 8 rgb:image image.png
        -
        +

        Built-in Images and Patterns

        ImageMagick has a number of built-in images and patterns. To utilize the checkerboard pattern, for example, use:

        -
        +
        
         magick -size 640x480 pattern:checkerboard checkerboard.png
        -
        +

        STDIN, STDOUT, and file descriptors

        Unix and Windows permit the output of one command to be piped to the input of another. ImageMagick permits image data to be read and written from the standard streams STDIN (standard in) and STDOUT (standard out), respectively, using a pseudo-filename of -. In this example we pipe the output of convert to the display program:

        -
        +
        
         magick logo: gif:- | display gif:-
        -
        +

        The second explicit format "gif:" is optional in the preceding example. The GIF image format has a unique signature within the image so ImageMagick's display command can readily recognize the format as GIF. The convert program also accepts STDIN as input in this way:

        -
        +
        
         magick rose: gif:- | magick - -resize "200%" bigrose.jpg'
        -
        +

        Other pipes can be accessed via their file descriptors (as of version 6.4.9-3). The file descriptors 0, 1, and 2 are reserved for the standard streams STDIN, STDOUT, and STDERR, respectively, but a pipe associated with a file descriptor number N>2 can be accessed using the pseudonym fd:N. (The pseudonyms fd:0 and fd:1 can be used for STDIN and STDOUT.) The next example shows how to append image data piped from files with descriptors 3 and 4 and direct the result to the file with descriptor number 5.

        -
        +
        
         magick fd:3 fd:4 -append fd:5
        -
        +

        When needed, explicit image formats can be given as mentioned earlier, as in the following.

        -
        +
        
         magick gif:fd:3 jpg:fd:4 -append tif:fd:5
        -
        +

        Selecting Frames

        Some images formats contain more than one image frame. Perhaps you only want the first image, or the last, or some number of images in-between. You can specify which image frames to read by appending the image filename with the frame range enclosed in brackets. Here our image (an animated GIF) contains more than one frame but we only want the first:

        -
        +
        
         magick 'images.gif[0]' image.png
        -
        +

        Unix shells generally interpret brackets so we enclosed the filename in quotes above. In a Windows command shell the brackets are not interpreted but using quotes doesn't hurt. However, in most cases the roles of single-quotes and double-quotes are reversed with respect to Unix and Windows, so Windows users should usually try double-quotes where we display single-quotes, and vice versa. @@ -234,16 +234,16 @@ In a Windows command shell the brackets are not interpreted but using quotes doe

        You can read more than one image from a sequence with a frame range. For example, you can extract the first four frames of an image sequence:

        -
        +
        
         magick 'images.gif[0-3]' images.mng
        -
        +

        Finally, you can read more than one image from a sequence, out-of-order. The next command gets the third image in the sequence, followed by the second, and then the fourth:

        -
        +
        
         magick 'images.gif[3,2,4]' images.mng
        -
        +

        Notice that in the last two commands, a single image is written. The output in this case, where the image type is MNG, is a multi-frame file because the MNG format supports multiple frames. Had the output format been JPG, which only supports single frames, the output would have consisted of separate frames. More about that below, in the section about the Output Filename.

        @@ -252,49 +252,49 @@ magick 'images.gif[3,2,4]' images.mng

        Raw images are a sequence of color intensities without additional meta information such as width, height, or image signature. With raw image formats, you must specify the image width and height but you can also specify a region of the image to read. In our example, the image is in the raw 8-bit RGB format and is 6000 pixels wide and 4000 pixels high. However, we only want a region of 600 by 400 near the center of the image:

        -
        +
        
         magick -size 6000x4000 -depth 8 'rgb:image[600x400+1900+2900]' image.jpg
        -
        +

        You can get the same results with the ‑extract option:

        -
        +
        
         magick -size 6000x4000 -depth 8 -extract 600x400+1900+2900 rgb:image image.jpg
        -
        +

        Inline Image Resize

        It is sometimes convenient to resize an image as they are read. Suppose you have hundreds of large JPEG images you want to convert to a sequence of PNG thumbails:

        -
        +
        
         magick '*.jpg' -resize 120x120 thumbnail%03d.png
        -
        +

        Here all the images are read and subsequently resized. It is faster and less resource intensive to resize each image it is read:

        -
        +
        
         magick '*.jpg[120x120]' thumbnail%03d.png
        -
        +

        Inline Image Crop

        It is sometimes convenient to crop an image as they are read. Suppose you have hundreds of large JPEG images you want to convert to a sequence of PNG thumbails:

        -
        +
        
         magick '*.jpg' -crop 120x120+10+5 thumbnail%03d.png
        -
        +

        Here all the images are read and subsequently cropped. It is faster and less resource-intensive to crop each image as it is read:

        -
        +
        
         magick '*.jpg[120x120+10+5]' thumbnail%03d.png
        -
        +

        Filename References

        @@ -303,23 +303,23 @@ magick '*.jpg[120x120+10+5]' thumbnail%03d.png The first is with '@' which reads image filenames separated by white space from the specified file. Assume the file myimages.txt consists of a list of filenames, like so:

        -
        +
        
         frame001.jpg
         frame002.jpg
         frame003.jpg
        -
        +

        We then expect this command:

        -
        +
        
         magick @myimages.txt mymovie.gif
        -
        +

        to read the images frame001.jpg, frame002.jpg, and frame003.jpg and convert them to a GIF image sequence.

        If the image path includes one or more spaces, enclose the path in quotes:

        -
        +
        
         'my title.jpg'
        -
        +

        Some ImageMagick command-line options may exceed the capabilities of @@ -333,29 +333,29 @@ the @ (e.g. @mypoly.txt).

        embedding a formatting character in the filename with a scene range. Consider the filename image-%d.jpg[1-5]. The command

        -
        +
        
         magick image-%d.jpg[1-5]
        -
        +

        causes ImageMagick to attempt to read images with these filenames:

        -
        +
        
         image-1.jpg
         image-2.jpg
         image-3.jpg
         image-4.jpg
         image-5.jpg
        -
        +

        Stream Buffering

        By default, the input stream is buffered. To ensure information on the source file or terminal is read as soon as its available, set the buffer size to 0:

        -
        +
        
         magick logo: gif:- | display -define stream:buffer-size=0 gif:-
        -
        +
        -

        Command-line Options

        +

        Command-line Options

        You can direct the behavior of ImageMagick utilities with these command-line options. The behavior of an option falls into one of these categories:

        @@ -381,9 +381,9 @@ is reset or the command-line terminates. The image settings include:

        In this example, -channel applies to each of the images, since, as we mentioned, settings persist:

        -
        +
        
         magick -channel RGB wand.png wizard.png images.png
        -
        +

        Image Operator

        @@ -401,9 +401,9 @@ include:

        In this example, -negate negates the wand image but not the wizard:

        -
        +
        
         magick wand.png -negate wizard.png images.png
        -
        +

        Image Channel Operator

        Operate directly on image channels:

        @@ -420,9 +420,9 @@ these image sequence operators:

        ‑append • ‑affinity • ‑average • ‑clut • ‑coalesce • ‑combine • ‑compare • ‑complex • ‑composite • ‑copy • ‑crop • ‑debug • ‑deconstruct • ‑delete • ‑evaluate‑sequence • ‑fft • ‑flatten • ‑fx • ‑hald‑clut • ‑ift • ‑identify • ‑insert • ‑layers • ‑limit • ‑map • ‑maximum • ‑minimum • ‑morph • ‑mosaic • ‑optimize • ‑print • ‑process • ‑quiet • ‑swap • ‑write

      In this example, -append appends three images into one:

      -
      +
      
       magick mikayla.png picnic.png beach.png -append vacation.png
      -
      +

      Image Geometry

      @@ -446,7 +446,7 @@ setting for more specifics.

      -
    Method
    +
    @@ -513,13 +513,13 @@ setting for more specifics.

    This fine image is 640 pixels wide and 480 pixels high. We say its dimensions are 640x480. When we give dimensions of an image, the width (the horizontal dimension) always precedes the height (the vertical dimension). This will be true when we speak of coordinates or offsets into an image, which will always be x–value followed by y. Just think of your high school algebra classes and the xy–plane. (Well, almost: our y–axis will always go downward!)

    -
    +
    
     magick logo: -resize '200%' bigWiz.png
     magick logo: -resize '200x50%' longShortWiz.png
     magick logo: -resize '100x200' notThinWiz.png
     magick logo: -resize '100x200^' biggerNotThinWiz.png
     magick logo: -resize '100x200!' dochThinWiz.png
    -
    +

    The first of the four commands is simple—it stretches both the width and height of the input image by 200% in each direction; it magnifies the whole thing by a factor of two. The second command specifies different percentages for each direction, stretching the width to 200% and squashing the height to 50%. The resulting image (in this example) has dimensions 1280x240. Notice that the percent symbol needn't be repeated; the following are equivalent: 200x50%, 200%x50, 200%x50%.

    @@ -535,12 +535,12 @@ magick logo: -resize '100x200!' dochThinWiz.png Here are a few more examples:

    -
    +
    
     magick logo: -resize '100' wiz1.png
     magick logo: -resize 'x200' wiz2.png
     magick logo: -resize '100x200>' wiz3.png
     magick logo: -resize '100x200<' wiz4.png
    -
    +

    If only one dimension is given it is taken to be the width. When only the width is specified, as in the first example above, the width is accepted as given and the height is chosen to maintain the aspect ratio of the input image. Similarly, if only the height is specified, as in the second example above, the height is accepted and the width is chosen to maintain the aspect ratio.

    @@ -549,9 +549,9 @@ magick logo: -resize '100x200<' wiz4.png

    Finally, use @ to specify the maximum area in pixels of an image, again while attempting to preserve aspect ratio. (Pixels take only integer values, so some approximation is always at work.) In the following example, an area of 10000 pixels is requested. The resulting file has dimensions 115x86, which has 9890 pixels.

    -
    +
    
     magick logo: -resize '10000@' wiz10000.png
    -
    +

    In all the examples above and below, we have enclosed the geometry arguments within quotation marks. Doing so is optional in many cases, but not always. We must enclose the geometry specifications in quotation marks when using < or > to prevent these characters from being interpreted by the shell as file redirection. On Windows systems, the carat ^ needs to be within quotes, else it is ignored. To be safe, one should probably maintain a habit of enclosing all geometry arguments in quotes, as we have here.

    @@ -562,11 +562,11 @@ Here are some examples to illustrate the use of offsets in geome ‑region option. This option allows many other options to modify the pixels within a specified rectangular subregion of an image. As such, it needs to be given the width and height of that region, and also an offset into the image, which is a pair of coordinates that indicate the location of the region within the larger image. Below, in the first example, we specify a region of size 100x200 to be located at the xy–coordinates x=10, y=20. Let's use the usual algebraic notation (x,y)=(10,20), for convenience.

    -
    +
    
     magick logo: -region '100x200+10+20' -negate wizNeg1.png
     magick logo: -region '100x200-10+20' -negate wizNeg2.png
     magick logo: -gravity center -region '100x200-10+20' -negate wizNeg3.png
    -
    +

    Note that offsets always require +/− signs. The offset is not actually a true location within the image; its coordinates must be added to some other location. Let's refer to that as the current location. In the first two examples above, though, that location is the upper-left hand corner of the image, which has coordinates (0,0). (That is the default situation when there are no other directives given to change it.) The first example above puts the 100x200 rectangle's own upper-left corner at (10,20).

    @@ -580,9 +580,9 @@ magick logo: -gravity center -region '100x200-10+20' -negate wizNeg3.png

    In school, your teacher probably permitted you to work on problems on a scrap of paper and then copy the results to your test paper. An image stack is similar. It permits you to work on an image or image sequence in isolation and subsequently introduce the results back into the command-line. The image stack is delineated with parenthesis. Image operators only affect images in the current stack. For example, we can limit the image rotation to just the wizard image like this:

    -
    +
    
     magick wand.gif \( wizard.gif -rotate 30 \) +append images.gif
    -
    +

    Notice again that the parentheses are escaped by preceding them with @@ -600,7 +600,7 @@ above.

    The arguments to these operators are indexes into the image sequence by number, starting with zero, for the first image, and so on. However if you give a negative index, the images are indexed from the end (last image added). That is, an index of -1 is the last image in the current image sequence, -2 gives the second-to-last, and so on.

    -

    Output Filename

    +

    Output Filename

    ImageMagick extends the concept of an output filename to include:

    @@ -616,18 +616,18 @@ above.

    Images can be stored in a mryiad of image formats including the better known JPEG, PNG, TIFF and others. ImageMagick must know the desired format of the image before it is written. ImageMagick leverages the filename extension to determine the format. For example, image.jpg tells ImageMagick to write the image in the JPEG format. In some cases the filename does not identify the image format. In these cases, the image is written in the format it was originally read unless an explicit image format is specified. For example, suppose we want to write our image to a filename of image in the raw red, green, and blue intensity format:

    -
    +
    
     magick image.jpg rgb:image
    -
    +

    Standard Out

    Unix permits the output of one command to be piped to another. ImageMagick permits piping one command to another with a filename of -. In this example we pipe the output of convert to the display program:

    -
    +
    
     magick logo: gif:- | display gif:-
    -
    +

    Here the explicit format is optional. The GIF image format has a signature that uniquely identifies it so ImageMagick can readily recognize the format as GIF.

    @@ -635,39 +635,39 @@ magick logo: gif:- | display gif:-

    Optionally, use an embedded formatting character to write a sequential image list. Suppose our output filename is image-%d.jpg and our image list includes 3 images. You can expect these images files to be written:

    -
    +
    
     image-0.jpg
     image-1.jpg
     image-2.jpg
    -
    +

    Or retrieve image properties to modify the image filename. For example, the command

    -
    +
    
     magick rose: -set filename:area '%wx%h' 'rose-%[filename:area].png'
    -
    +

    writes an image with this filename:

    -
    +
    
       rose-70x46.png
    -
    +

    Finally to convert multiple JPEG images to individual PDF pages, use:

    -
    +
    
     magick *.jpg +adjoin page-%d.pdf
    -
    +

    Stream Buffering

    By default, the output stream is buffered. To ensure information appears on the destination file or terminal as soon as written, set the buffer size to 0:

    -
    +
    
     magick -define stream:buffer-size=0 logo: gif:- | display gif:-
    -
    +

    Donate • @@ -688,4 +688,4 @@ magick -define stream:buffer-size=0 logo: gif:- | display gif:- - \ No newline at end of file + \ No newline at end of file diff --git a/www/command-line-tools.html b/www/command-line-tools.html index dc30712e4..d41243316 100644 --- a/www/command-line-tools.html +++ b/www/command-line-tools.html @@ -25,14 +25,13 @@ - - - + + + - + -

    (adsbygoogle = window.adsbygoogle || []).push({}); -
    +

    ImageMagick includes a number of command-line utilities for manipulating images. Most of you are probably accustomed to editing images one at a time with a graphical user interface (GUI) with such programs as Gimp or Photoshop. However, a GUI is not always convenient. Suppose you want to process an image dynamically from a web script or you want to apply the same operations to many images or repeat a specific operation at different times to the same or different image. For these types of operations, the command-line image processing utility is appropriate.

    @@ -64,28 +64,28 @@

    Here is a short description for each command-line tool. Click on the program name to get details about the program usage and a list of command-line options that alters how the program behaves. If you are just getting acquainted with ImageMagick, start with the magick program. Be sure to peruse Anthony Thyssen's tutorial on how to use ImageMagick utilities to create, edit, compose, or convert images from the command-line.

    -
    -
    magick
    convert between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more.
    -
    magick-script
    use this scripting language interpreter to convert between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more.
    +
    +
    magick
    convert between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more.
    +
    magick-script
    use this scripting language interpreter to convert between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more.

    We also support tools for compatibility with ImageMagick version 6:

    -
    -
    animate
    animate an image sequence on any X server.
    -
    compare
    mathematically and visually annotate the difference between an image and its reconstruction.
    -
    composite
    overlap one image over another.
    -
    conjure
    interpret and execute scripts written in the Magick Scripting Language (MSL).
    -
    convert
    convert between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more.
    -
    display
    display an image or image sequence on any X server.
    -
    identify
    describe the format and characteristics of one or more image files.
    -
    import
    save any visible window on an X server and outputs it as an image file. You can capture a single window, the entire screen, or any rectangular portion of the screen.
    -
    mogrify
    resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more. Mogrify overwrites the original image file, whereas, convert writes to a different image file.
    -
    montage
    create a composite image by combining several separate images. The images are tiled on the composite image optionally adorned with a border, frame, image name, and more.
    -
    stream
    a lightweight tool to stream one or more pixel components of the image or portion of the image to your choice of storage formats. It writes the pixel components as they are read from the input image a row at a time making stream desirable when working with large images or when you require raw pixel components.
    +
    +
    animate
    animate an image sequence on any X server.
    +
    compare
    mathematically and visually annotate the difference between an image and its reconstruction.
    +
    composite
    overlap one image over another.
    +
    conjure
    interpret and execute scripts written in the Magick Scripting Language (MSL).
    +
    convert
    convert between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more.
    +
    display
    display an image or image sequence on any X server.
    +
    identify
    describe the format and characteristics of one or more image files.
    +
    import
    save any visible window on an X server and outputs it as an image file. You can capture a single window, the entire screen, or any rectangular portion of the screen.
    +
    mogrify
    resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more. Mogrify overwrites the original image file, whereas, convert writes to a different image file.
    +
    montage
    create a composite image by combining several separate images. The images are tiled on the composite image optionally adorned with a border, frame, image name, and more.
    +
    stream
    a lightweight tool to stream one or more pixel components of the image or portion of the image to your choice of storage formats. It writes the pixel components as they are read from the input image a row at a time making stream desirable when working with large images or when you require raw pixel components.

    If these tools are not available, you can simply append them to the magick tool like this:

    -
    +
    
     magick convert logo: logo.jpg
    -
    +
    @@ -107,4 +107,4 @@ magick convert logo: logo.jpg
    - \ No newline at end of file + \ No newline at end of file diff --git a/www/compare.html b/www/compare.html index 320732f76..c81a7cd90 100644 --- a/www/compare.html +++ b/www/compare.html @@ -25,14 +25,13 @@ - - - + + + - + -
    (adsbygoogle = window.adsbygoogle || []).push({}); -
    +

    Example Usage • Option Summary

    Use the compare program to mathematically and visually annotate the difference between an image and its reconstruction. See Command Line Processing for advice on how to structure your compare command or see below for example usages of the command.

    -

    Example Usage

    +

    Example Usage

    We list a few examples of the compare command here to illustrate its usefulness and ease of use. To get started, lets compare an image to one thats been sharpened:

    -
    +
    
     magick convert rose.jpg -sharpen 0x1 reconstruct.jpg
     magick compare rose.jpg reconstruct.jpg difference.png
     magick compare -compose src rose.jpg reconstruct.jpg difference.png
    -
    +
      rose @@ -82,7 +82,7 @@ magick compare -compose src rose.jpg reconstruct.jpg difference.png

      In addition to the visual interpretation of the difference in an image and its reconstruction, we report a mathematical measure of the difference:

      -
      +
      
       -> magick compare -verbose -metric mae rose.jpg reconstruct.jpg difference.png
       Image: rose.jpg
        Channel distortion: MAE
      @@ -90,37 +90,37 @@ Image: rose.jpg
         green: 1853.99 (0.0282901)
         blue: 2008.67 (0.0306503)
         all: 1536.39 (0.0234439)
      -
      +

      Or, if you just want the red channel distortion, use this command:

      -
      +
      
       -> magick compare -channel red -metric PSNR rose.jpg reconstruct.jpg difference.png
       19.63
      -
      +

      Or, if you just want the overall image distortion, use this command:

      -
      +
      
       -> magick compare -metric PSNR rose.jpg reconstruct.jpg difference.png
       28.31
      -
      +

      If the reconstructed image is a subimage of the image, the compare program returns the best match offset. In addition, it returns a similarity image such that an exact match location is completely white and if none of the pixels match, black, otherwise some gray level in-between:

      -
      +
      
       -> magick compare -metric RMSE -subimage-search logo.png wizard.jpg similarity.gif
       85.05 (0.00129778) @ 353,157
      -
      +

      You can find additional examples of using compare in Graphics from the Command Line. Further discussion is available in More Graphics from the Command Line and Examples of ImageMagick Usage.

      The compare program returns 2 on error otherwise 0 if the images are similar or 1 if they are dissimilar.

      -

      Option Summary

      +

      Option Summary

      The compare command recognizes these options. Click on an option to get more details about how that option works.

      -
    +
    @@ -415,4 +415,4 @@ transparent, extract, background, or shape the alpha channel - \ No newline at end of file + \ No newline at end of file diff --git a/www/compose.html b/www/compose.html index b390421a0..fab1d8542 100644 --- a/www/compose.html +++ b/www/compose.html @@ -25,14 +25,13 @@ - - - + + + - + -
    (adsbygoogle = window.adsbygoogle || []).push({}); -
    +

    This page descibed the Image composition methods that is used to define how @@ -93,7 +93,7 @@ floating-point mathematics rather than simple boolean operations.

    The following alpha blending (Duff-Porter) compose methods are available:

    -
    Option
    +
    @@ -198,7 +198,7 @@ the rest of the image outside the overlaid area.

    The following mathematical composition methods are also available.

    -
    Method
    +
    @@ -307,7 +307,7 @@ methods.

    The following lighting composition methods are also available.

    -
    Method
    +
    @@ -411,7 +411,7 @@ methods.

    Also included are these special purpose compose methods:

    -
    Method
    +
    @@ -456,9 +456,9 @@ but not always, the same name as the composite 'method' they use, and replaces the normal use of the -compose setting in the "composite" command. For example...

    -
    +
    
     composite ... -blend 50x50 ...
    -
    +

    As of IM v6.5.3-4 the "convert" command can now also supply these extra arguments to its -

    Method
    +
    diff --git a/www/composite.html b/www/composite.html index 5968d29dd..47aeebdd6 100644 --- a/www/composite.html +++ b/www/composite.html @@ -25,14 +25,13 @@ - - - + + + - + -
    +

    Example Usage • Option Summary

    Use the composite program to overlap one image over another. See Command Line Processing for advice on how to structure your composite command or see below for example usages of the command.

    -

    Example Usage

    +

    Example Usage

    We list a few examples of the composite command here to illustrate its usefulness and ease of use. To get started, lets overlay a smiley face over a rose:

    -
    +
    
     magick composite -gravity center smile.gif  rose: rose-over.png
    -
    +
      smile @@ -79,12 +79,12 @@ magick composite -gravity center smile.gif rose: rose-over.png

      You can create three-dimensional effect with the Atop:

      -
      +
      
       magick convert -size 70x70 canvas:none -fill red -draw 'circle 35,35 10,30' red-circle.png
       magick convert -size 70x70 canvas:none -draw 'circle 35,35 35,20' -negate \
       -channel A -gaussian-blur 0x8 white-highlight.png
       magick composite -compose atop -geometry -13-17 white-highlight.png red-circle.png red-ball.png
      -
      +
        white highlight @@ -96,11 +96,11 @@ magick composite -compose atop -geometry -13-17 white-highlight.png red-circle.p

        You can find additional examples of using composite in Examples of ImageMagick Usage. You can find out more about them and the mathematics by looking at SVG Alpha Compositing

        -

        Option Summary

        +

        Option Summary

        The composite command recognizes these options. Click on an option to get more details about how that option works.

        -
    Method
    +
    @@ -526,4 +526,4 @@ transparent, extract, background, or shape the alpha channel - \ No newline at end of file + \ No newline at end of file diff --git a/www/conjure.html b/www/conjure.html index 1957e52ef..3dc5cab29 100644 --- a/www/conjure.html +++ b/www/conjure.html @@ -25,14 +25,13 @@ - - - + + + - + -
    (adsbygoogle = window.adsbygoogle || []).push({}); -
    +

    Example Usage • Option Summary • Magick Scripting Language (MSL)

    The conjure program gives you the ability to perform custom image processing tasks from a script written in the Magick Scripting Language (MSL). MSL is XML-based and consists of action statements with attributes. Actions include reading an image, processing an image, getting attributes from an image, writing an image, and more. An attribute is a key/value pair that modifies the behavior of an action. See Command Line Processing for advice on how to structure your conjure command or see below for example usages of the command.

    -

    Example Usage

    +

    Example Usage

    We list a few examples of the conjure command here to illustrate its usefulness and ease of use. To get started, here is simple conjure command:

    -
    +
    
     magick conjure -dimensions 400x400 msl:incantation.msl
    -
    +

    The MSL script incantation.msl used above is here:

    -
    +
    
     <?xml version="1.0" encoding="UTF-8"?>
     <image>
       <read filename="image.gif" />
    @@ -81,11 +81,11 @@ magick conjure -dimensions 400x400 msl:incantation.msl
       <print output="Image sized from %[base-width]x%[base-height] to %[resize-width]x%[resize-height].\n" />
       <write filename="image.png" />
     </image>
    -
    +

    In this example, a family stayed home for their vacation but as far as their friends are concerned they went to a beautiful beach in the Caribbean:

    -
    +
    
     <?xml version="1.0" encoding="UTF-8"?>
     <group>
         <image id="family">
    @@ -103,21 +103,21 @@ magick conjure -dimensions 400x400 msl:incantation.msl
         </image>
         <write filename="family-vacation.png"/>
     </group>
    -
    +

    Here we display the width in pixels of text for a particular font and pointsize.

    -
    +
    
     <?xml version="1.0" encoding="UTF-8"?>
     <image>
       <query-font-metrics text="ImageMagick" font="helvetica" pointsize="48" />
       <print output="Text width is %[msl:font-metrics.width] pixels.\n" />
     </image>
    -
    +

    The query-font-metrics tag supports these properties:

    -
    +
    
     msl:font-metrics.pixels_per_em.x
     msl:font-metrics.pixels_per_em.y
     msl:font-metrics.ascent
    @@ -131,7 +131,7 @@ msl:font-metrics.bounds.x2
     msl:font-metrics.bounds.y2
     msl:font-metrics.origin.x
     msl:font-metrics.origin.y
    -
    +

    MSL supports most methods and attributes discussed in the Perl API for ImageMagick.

    @@ -141,11 +141,11 @@ msl:font-metrics.origin.y

    You can find additional examples of using conjure in Graphics from the Command Line. Further discussion is available in More Graphics from the Command Line and Examples of ImageMagick Usage.

    -

    Option Summary

    +

    Option Summary

    The conjure command recognizes these options. Click on an option to get more details about how that option works.

    -
    Option
    +
    @@ -200,9 +200,9 @@ msl:font-metrics.origin.y
    Option
    -

    Magick Scripting Language

    +

    Magick Scripting Language

    The conjure command recognizes these MSL elements. Any element with a strike-thru is not supported yet.

    - +
    @@ -1138,4 +1138,4 @@ fill="color name", channel="All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, - \ No newline at end of file + \ No newline at end of file diff --git a/www/connected-components.html b/www/connected-components.html index 42429ab75..c2963b9ee 100644 --- a/www/connected-components.html +++ b/www/connected-components.html @@ -25,14 +25,13 @@ - - - + + + - + -
    (adsbygoogle = window.adsbygoogle || []).push({}); -
    +

    Connected-component labeling (alternatively connected-component analysis, blob extraction, region labeling, blob discovery, or region extraction) uniquely labels connected components in an image. The labeling process scans the image, pixel-by-pixel from top-left to bottom-right, in order to identify connected pixel regions, i.e. regions of adjacent pixels which share the same set of intensity values. For example, let's find the objects in this image:

      purse

    To identify the objects in this image, use this command:

    -
    +
    
     convert objects.gif -connected-components 4 -auto-level -depth 8 objects.png
    -
    +

    The detected objects are uniquely labeled. Use auto leveling to visualize the detected objects:

      Objects

    Object statistics is useful to review. To display them, use this command:

    -
    +
    
     convert objects.gif -define connected-components:verbose=true -connected-components 4 objects.png
    -
    +

    Five objects were detected in the source image with these statistics:

    -
    +
    
     Objects (id: bounding-box centroid area mean-color):
       0: 256x171+0+0 119.2,80.8 33117 srgb(0,0,0)
       2: 120x135+104+18 159.5,106.5 8690 srgb(255,255,255)
       3: 50x36+129+44 154.2,63.4 1529 srgb(0,0,0)
       4: 21x23+0+45 8.8,55.9 409 srgb(255,255,255)
       1: 4x10+252+0 253.9,4.1 31 srgb(255,255,255)
    -
    +

    Use -connected-components 8 to visit 8 neighbors rather than 4. By default, neighbor colors must be exact to be part of a unique object. Use the -fuzz option to include pixels as part of an object that are close in color.

    You might want to eliminate small objects by merging them with their larger neighbors. If so, use this command:

    -
    +
    
     convert objects.gif -define connected-components:area-threshold=410 -connected-components 4 \
       -auto-level objects.jpg
    -
    +

    Here are the expected results. Notice, how the small objects are now merged with the background.

      Objects

    Notice how two of the objects were merged leaving three remaining objects:

    -
    +
    
     Objects (id: bounding-box centroid area mean-color):
       0: 256x171+0+0 118.0,80.4 33557 srgb(0,0,0)
       2: 120x135+104+18 159.5,106.5 8690 srgb(255,255,255)
       3: 50x36+129+44 154.2,63.4 1529 srgb(0,0,0)
    -
    +

    By default, the labeled image is grayscale. You can instead replace the object color in the labeled image with the mean-color from the source image. Simply add this setting, -define connected-components:mean-color=true, to your command line.

    You may want to remove certain objects by making them transparent. Use -define connected-components:remove=list-of-ids (e.g. -define connected-components:remove=2,4-5). Or use -define connected-components:keep=list-of-ids to keep these objects and make all others transparent.

    @@ -121,4 +121,4 @@ Objects (id: bounding-box centroid area mean-color):
    - \ No newline at end of file + \ No newline at end of file diff --git a/www/contact.html b/www/contact.html index 28a358b64..709d78166 100644 --- a/www/contact.html +++ b/www/contact.html @@ -25,14 +25,13 @@ - - - + + + - + -
    (adsbygoogle = window.adsbygoogle || []).push({}); -
    +

    Post here for any of the issues listed below. You can expect a response from our team if your issue is a sponsorship, license, security, or paid support issue. If you require a response for any other issue, post to the ImageMagick public forums. You can also post bug reports to the issues forum. Note, we do not offer sponsored links nor do we respond to solicitations.

    -

    Contact the Wizards

    +

    Contact the Wizards

    Enter this code, 040d70, in the Authenticate field and fill in the remaining fields. Press Send to forward your message to the ImageMagick wizards:


    -
    Magick Scripting Language (MSL)
    +
    diff --git a/www/convert.html b/www/convert.html index 7c678de16..906b1f254 100644 --- a/www/convert.html +++ b/www/convert.html @@ -25,14 +25,13 @@ - - - + + + - + -
    (adsbygoogle = window.adsbygoogle || []).push({}); -
    +

    Use the convert program to convert between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more. See Command Line Processing for advice on how to structure your convert command or see below for example usages of the command.

    We list a few examples of the convert command here to illustrate its usefulness and ease of use. To get started, lets convert an image in the JPEG format to PNG:

    -
    +
    
     magick convert rose.jpg rose.png
    -
    +

    Next, we reduce the image size before it is written to the PNG format:

    -
    +
    
     magick convert rose.jpg -resize 50% rose.png
    -
    +
    +
    @@ -1322,4 +1322,4 @@ transparent, extract, background, or shape the alpha channel - \ No newline at end of file + \ No newline at end of file diff --git a/www/develop.html b/www/develop.html index c4dcd8123..89ec1d038 100644 --- a/www/develop.html +++ b/www/develop.html @@ -25,14 +25,13 @@ - - - + + + - + -
    (adsbygoogle = window.adsbygoogle || []).push({}); -
    +

    ImageMagick includes a number of ready-made interfaces. This makes it possible to modify or create images automagically and dynamically utilizing your favorite development platform.

    -
    -
    Ada
    +
    +
    Ada
    -
    G2F implements an Ada 95 binding to a subset of the low-level MagickCore library.
    +
    G2F implements an Ada 95 binding to a subset of the low-level MagickCore library.
    -
    C
    +
    C
    -
    Use MagickWand to convert, compose, and edit images from the C language. There is also the low-level MagickCore library for wizard-level developers.
    +
    Use MagickWand to convert, compose, and edit images from the C language. There is also the low-level MagickCore library for wizard-level developers.
    -
    Ch
    +
    Ch
    -
    ChMagick is a Ch binding to the MagickCore and MagickWand API. Ch is an embeddable C/C++ interpreter for cross-platform scripting.
    +
    ChMagick is a Ch binding to the MagickCore and MagickWand API. Ch is an embeddable C/C++ interpreter for cross-platform scripting.
    -
    COM+
    +
    COM+
    -
    Use ImageMagickObject to convert, compose, and edit images from a Windows COM+ compatible component.
    +
    Use ImageMagickObject to convert, compose, and edit images from a Windows COM+ compatible component.
    -
    C++
    +
    C++
    -
    Magick++ provides an object-oriented C++ interface to ImageMagick. See A Gentle Introduction to Magick++ for an introductory tutorial to Magick++. We include the source if you want to correct, enhance, or expand the tutorial.
    +
    Magick++ provides an object-oriented C++ interface to ImageMagick. See A Gentle Introduction to Magick++ for an introductory tutorial to Magick++. We include the source if you want to correct, enhance, or expand the tutorial.
    -
    GO
    -
    GoImagick is a set of Go bindings to ImageMagick's MagickWand and MagickCore C APIs.
    +
    GO
    +
    GoImagick is a set of Go bindings to ImageMagick's MagickWand and MagickCore C APIs.
    -
    Java
    +
    Java
    -
    JMagick provides an object-oriented Java interface to ImageMagick. Im4java is a pure-java interface to the ImageMagick command-line.
    +
    JMagick provides an object-oriented Java interface to ImageMagick. Im4java is a pure-java interface to the ImageMagick command-line.
    -
    Julia
    +
    Julia
    -
    JuliaIO provides an object-oriented Julia interface to ImageMagick.
    +
    JuliaIO provides an object-oriented Julia interface to ImageMagick.
    -
    LabVIEW
    +
    LabVIEW
    -
    LVOOP ImageMagick is an object-oriented LabVIEW interface to ImageMagick.
    +
    LVOOP ImageMagick is an object-oriented LabVIEW interface to ImageMagick.
    -
    Lisp
    +
    Lisp
    -
    CL-Magick provides a Common Lisp interface to the ImageMagick library.
    +
    CL-Magick provides a Common Lisp interface to the ImageMagick library.
    -
    Lua
    +
    Lua
    -
    Lua bindings to ImageMagick for LuaJIT using FFI.
    -
    Lua bindings to ImageMagick for Lua using pure-C.
    +
    Lua bindings to ImageMagick for LuaJIT using FFI.
    +
    Lua bindings to ImageMagick for Lua using pure-C.
    -
    Neko
    +
    Neko
    -
    NMagick is a port of the ImageMagick library to the haXe and Neko platforms. It provides image manipulation capabilities to both web and desktop applications using Neko.
    +
    NMagick is a port of the ImageMagick library to the haXe and Neko platforms. It provides image manipulation capabilities to both web and desktop applications using Neko.
    -
    .NET
    +
    .NET
    -
    Use Magick.NET to convert, compose, and edit images from Windows .NET.
    +
    Use Magick.NET to convert, compose, and edit images from Windows .NET.
    -
    ImageMagickApp is a .NET application written in C# that utilizes the ImageMagick command line to allow conversion of multiple image formats to different formats.
    +
    ImageMagickApp is a .NET application written in C# that utilizes the ImageMagick command line to allow conversion of multiple image formats to different formats.
    -
    Pascal
    +
    Pascal
    -
    PascalMagick a Pascal binding for the MagickWand API and also the low-level MagickCore library. It works with Free Pascal / Lazarus and Delphi.
    +
    PascalMagick a Pascal binding for the MagickWand API and also the low-level MagickCore library. It works with Free Pascal / Lazarus and Delphi.
    -
    Perl
    +
    Perl
    -
    Use PerlMagick to convert, compose, and edit images from the Perl language.
    +
    Use PerlMagick to convert, compose, and edit images from the Perl language.
    -
    PHP
    +
    PHP
    -
    MagickWand for PHP a native PHP-extension to the ImageMagick MagickWand API.
    +
    MagickWand for PHP a native PHP-extension to the ImageMagick MagickWand API.
    -
    IMagick is a native PHP extension to create and modify images using the ImageMagick API. Documentation for the extension is available here.
    +
    IMagick is a native PHP extension to create and modify images using the ImageMagick API. Documentation for the extension is available here.
    -
    phMagick is a wrapper class for ImageMagick, wrapping the most common web image manipulation actions in easy to use functions, but allowing full access to ImageMagick's power by issuing system calls to it's command-line programs.
    +
    phMagick is a wrapper class for ImageMagick, wrapping the most common web image manipulation actions in easy to use functions, but allowing full access to ImageMagick's power by issuing system calls to it's command-line programs.
    -
    Python
    +
    Python
    -
    Wand is a ctypes-based ImagedMagick binding library for Python.
    -
    PythonMagick is an object-oriented Python interface to ImageMagick.
    -
    PythonMagickWand is an object-oriented Python interface to MagickWand based on ctypes.
    -
    Scilab Image Processing toolbox utilizes ImageMagick to do imaging tasks such as filtering, blurring, edge detection, thresholding, histogram manipulation, segmentation, mathematical morphology, color image processing, etc..
    +
    Wand is a ctypes-based ImagedMagick binding library for Python.
    +
    PythonMagick is an object-oriented Python interface to ImageMagick.
    +
    PythonMagickWand is an object-oriented Python interface to MagickWand based on ctypes.
    +
    Scilab Image Processing toolbox utilizes ImageMagick to do imaging tasks such as filtering, blurring, edge detection, thresholding, histogram manipulation, segmentation, mathematical morphology, color image processing, etc..
    -
    REALbasic
    +
    REALbasic
    -
    The MBS Realbasic ImageMagick is a plugin that utilizes the power of ImageMagick from within the RealBasic environment.
    +
    The MBS Realbasic ImageMagick is a plugin that utilizes the power of ImageMagick from within the RealBasic environment.
    -
    Ruby
    +
    Ruby
    -
    RMagick is an interface between the Ruby programming language and the MagickCore image processing libraries. Get started with RMagick by perusing the documentation.
    +
    RMagick is an interface between the Ruby programming language and the MagickCore image processing libraries. Get started with RMagick by perusing the documentation.
    -
    MagickWand for Ruby is an interface between the Ruby programming language and the MagickWand image processing libraries. Get started with MagickWand for PHP by perusing the documentation.
    +
    MagickWand for Ruby is an interface between the Ruby programming language and the MagickWand image processing libraries. Get started with MagickWand for PHP by perusing the documentation.
    -
    MiniMagick is a Ruby wrapper for ImageMagick command line. MiniMagick gives you convenient access to all the command line options ImageMagick supports.
    +
    MiniMagick is a Ruby wrapper for ImageMagick command line. MiniMagick gives you convenient access to all the command line options ImageMagick supports.
    -
    QuickMagick is a gem for easily accessing ImageMagick command line tools from Ruby programs.
    +
    QuickMagick is a gem for easily accessing ImageMagick command line tools from Ruby programs.
    -
    Rust
    +
    Rust
    -
    RustWand is a MagickWand bindings for the Rust language.
    +
    RustWand is a MagickWand bindings for the Rust language.
    -
    Tcl/Tk
    +
    Tcl/Tk
    -
    TclMagick a native Tcl-extension to the ImageMagick MagickWand API.
    +
    TclMagick a native Tcl-extension to the ImageMagick MagickWand API.
    -
    XML RPC
    +
    XML RPC
    -
    RemoteMagick is an XML-RPC web service that creates image thumbnails.
    +
    RemoteMagick is an XML-RPC web service that creates image thumbnails.
    @@ -186,4 +186,4 @@
    - \ No newline at end of file + \ No newline at end of file diff --git a/www/display.html b/www/display.html index ac32a7285..1b635ea9e 100644 --- a/www/display.html +++ b/www/display.html @@ -25,14 +25,13 @@ - - - + + + - + -
    (adsbygoogle = window.adsbygoogle || []).push({}); -
    +

    Example Usage • Option Summary

    Use the display program to display an image or image sequence on any X server. See Command Line Processing for advice on how to structure your display command or see below for example usages of the command.

    -

    Example Usage

    +

    Example Usage

    We list a few examples of the display command here to illustrate its usefulness and ease of use. To get started, lets display an image in the JPEG format:

    -
    +
    
     magick display rose.jpg
    -
    +

    To tile a slate texture onto the root window, use:

    -
    +
    
     magick display -size 1280x1024 -window root slate.png
    -
    +

    To display a visual image directory of all your JPEG images, use:

    -
    +
    
     magick display 'vid:*.jpg'
    -
    +

    The display program defaults to the X screen resolution. To display vecotr formats at their intended size, override the default resolution:

    -
    +
    
     magick display -density 72 drawing.svg
    -
    +

    You can find additional examples of using display in Graphics from the Command Line. Further discussion is available in More Graphics from the Command Line and Examples of ImageMagick Usage.

    -

    Option Summary

    +

    Option Summary

    The display command recognizes these options. Click on an option to get more details about how that option works.

    -
    -adaptive-blur geometry adaptively blur pixels; decrease effect near edges
    +
    @@ -568,4 +568,4 @@ transparent, extract, background, or shape the alpha channel - \ No newline at end of file + \ No newline at end of file diff --git a/www/distribute-pixel-cache.html b/www/distribute-pixel-cache.html index 57bcc01fe..236a850da 100644 --- a/www/distribute-pixel-cache.html +++ b/www/distribute-pixel-cache.html @@ -25,14 +25,13 @@ - - - + + + - + -
    (adsbygoogle = window.adsbygoogle || []).push({}); -
    +

    A distributed pixel cache is an extension of the traditional pixel cache available on a single host. The distributed pixel cache may span multiple servers so that it can grow in size and transactional capacity to support very large images or large image sequences. Start up the pixel cache server on one or more hosts. When you read or operate on an image and the local pixel cache resources are exhausted, ImageMagick contacts one or more of these remote pixel servers to store or retrieve pixels.

    For really large images or large image sequences, or if there is limited resources on your host, you can utilize a distributed pixel cache on one or more remote hosts. Here we create two distributed pixel caches and utilize them from our desktop:

    -
    +
    
     convert -distribute-cache 6668 &  # start on 192.168.100.50
     convert -distribute-cache 6668 &  # start on 192.168.100.51
     convert -limit memory 1GiB -limit map 2GiB -limit disk 4GiB \
       -define registry:cache:hosts=192.168.100.50:6668,192.168.100.51:6668 \
       myhugeimage.jpg -sharpen 5x2 myhugeimage.png
    -
    +

    For large image sequences, the servers are contacted in a round-robin fashion to distribute the load over multiple distributed pixel caches (assuming you have a host list rather than a single host). In our example, some modest resources are available on the desktop as defined by the -limit option. For smaller images, they are allocated on the desktop up to the specified limits.

    Your image processing tasks are likely to perform slower when utilizing a distributed pixel cache due to pixels shuffling between the client and the server over a network. Algorithms that access virtual pixels (e.g. -sharpen) are noticeably slower, up to 3 times slower, than algorithms that only access authentic pixels (e.g. -negate) due to increased network traffic.

    A client can only contact a compatible distributed pixel cache server. Compatibility requires the same ImageMagick library interface, quantum depth, HDRI status, OS word size, and endianness. The distributed pixel cache checks these attributes and exits if these requirements are not met.

    @@ -89,4 +89,4 @@ convert -limit memory 1GiB -limit map 2GiB -limit disk 4GiB \
    - \ No newline at end of file + \ No newline at end of file diff --git a/www/download.html b/www/download.html index ce8dc5ee2..eec2cefa4 100644 --- a/www/download.html +++ b/www/download.html @@ -25,14 +25,13 @@ - - - + + + - + -
    (adsbygoogle = window.adsbygoogle || []).push({}); -
    +

    Unix Binary Release • Mac OS X Binary Release • iOS Binary Release • Windows Binary Release

    You can install ImageMagick from source. However, if you don't have a proper development environment or if you're anxious to get started, download a ready-to-run Unix or Windows executable. Before you download, you may want to review recent changes to the ImageMagick distribution.

    -

    Unix Binary Release

    +

    ImageMagick source and binary distributions are available from a variety of FTP and Web mirrors around the world.

    + +

    Unix Binary Release

    These are the Unix variations that we support. If your system is not on the list, try installing from source. Although ImageMagick runs fine on a single core computer, it automagically runs in parallel on dual and quad-core systems reducing run times considerably.

    -
    Option
    +
    @@ -76,16 +78,16 @@ - - - + + + - - - + + + @@ -122,59 +124,59 @@

    ImageMagick RPM's are self-installing. Simply type the following command and you're ready to start using ImageMagick:

    -
     rpm -Uvh ImageMagick-7.0.5-10.x86_64.rpm

    You'll need the libraries as well:

    -
     rpm -Uvh ImageMagick-libs-7.0.5-10.x86_64.rpm
    +
     rpm -Uvh ImageMagick-7.0.6-0.x86_64.rpm

    You'll need the libraries as well:

    +
     rpm -Uvh ImageMagick-libs-7.0.6-0.x86_64.rpm

    For other systems, create (or choose) a directory to install the package into and change to that directory, for example:

    -
    +
    
     cd $HOME
    -
    +

    Next, extract the contents of the package. For example:

    -
    +
    
     tar xvzf ImageMagick.tar.gz
    -
    +

    Set the MAGICK_HOME environment variable to the path where you extracted the ImageMagick files. For example:

    -
     export MAGICK_HOME="$HOME/ImageMagick-7.0.5"
    +
     export MAGICK_HOME="$HOME/ImageMagick-7.0.6"

    If the bin subdirectory of the extracted package is not already in your executable search path, add it to your PATH environment variable. For example:

    -
    +
    
     export PATH="$MAGICK_HOME/bin:$PATH
    -
    +

    On Linux and Solaris machines add $MAGICK_HOME/lib to the LD_LIBRARY_PATH environment variable:

    -
    +
    
     LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$MAGICK_HOME/lib
     export LD_LIBRARY_PATH
    -
    +

    Finally, to verify ImageMagick is working properly, type the following on the command line:

    -
    +
    
     magick logo: logo.gif
     identify logo.gif
     display logo.gif
    -
    +

    Congratulations, you have a working ImageMagick distribution under Unix or Linux and you are ready to use ImageMagick to convert, compose, or edit your images or perhaps you'll want to use one of the Application Program Interfaces for C, C++, Perl, and others.

    -

    Mac OS X Binary Release

    +

    Mac OS X Binary Release

    We recommend MacPorts which custom builds ImageMagick in your environment (some users prefer Homebrew). Download MacPorts and type:

    -
    +
    
     sudo port install ImageMagick
    -
    +

    The port command downloads ImageMagick and many of its delegate libraries (e.g. JPEG, PNG, Freetype, etc.) and configures, builds, and installs ImageMagick automagically. Alternatively, you can download the ImageMagick Mac OS X distribution we provide:

    -
    Version
    ImageMagick-7.0.5-10.x86_64.rpmdownloaddownloadImageMagick-7.0.6-0.x86_64.rpmdownloaddownload Redhat / CentOS 7.1 x86_64 RPM
    ImageMagick-libs-7.0.5-10.x86_64.rpmdownloaddownloadImageMagick-libs-7.0.6-0.x86_64.rpmdownloaddownload Redhat / CentOS 7.1 x86_64 RPM
    +
    @@ -195,39 +197,39 @@ sudo port install ImageMagick

    Create (or choose) a directory to install the package into and change to that directory, for example:

    -
    +
    
     cd $HOME
    -
    +

    Next, extract the contents of the package. For example:

    -
    +
    
     tar xvzf ImageMagick-x86_64-apple-darwin15.2.0.tar.gz
    -
    +

    Set the MAGICK_HOME environment variable to the path where you extracted the ImageMagick files. For example:

    -
     export MAGICK_HOME="$HOME/ImageMagick-7.0.5"
    +
     export MAGICK_HOME="$HOME/ImageMagick-7.0.6"

    If the bin subdirectory of the extracted package is not already in your executable search path, add it to your PATH environment variable. For example:

    -
    +
    
     export PATH="$MAGICK_HOME/bin:$PATH"
    -
    +

    Set the DYLD_LIBRARY_PATH environment variable:

    -
    +
    
     export DYLD_LIBRARY_PATH="$MAGICK_HOME/lib/"
    -
    +

    Finally, to verify ImageMagick is working properly, type the following on the command line:

    -
    +
    
     magick logo: logo.gif
     identify logo.gif
     display logo.gif
    -
    +

    Note, the display program requires the X11 server available on your Mac OS X installation DVD. Once that is installed, you will also need to export DISPLAY=:0.

    @@ -235,7 +237,7 @@ display logo.gif

    Congratulations, you have a working ImageMagick distribution under Mac OS X and you are ready to use ImageMagick to convert, compose, or edit your images or perhaps you'll want to use one of the Application Program Interfaces for C, C++, Perl, and others.

    -

    iOS Binary Release

    +

    iOS Binary Release

    ~Claudio provides iOS builds of ImageMagick.

    @@ -255,10 +257,10 @@ display logo.gif

    ImageMagick compiling script for iOS OS and iOS Simulator

    To run the script:

    -
    +
    
     ./imagemagick_compile.sh VERSION
    -
    -

    where VERSION is the version of ImageMagick you want to compile (i.e.: 7.0.5-10, svn, ...)

    +
    +

    where VERSION is the version of ImageMagick you want to compile (i.e.: 7.0.6-0, svn, ...)

    This script compiles ImageMagick as a static library to be included in iOS projects and adds support for

      @@ -288,7 +290,7 @@ display logo.gif

      A sample project is available for download. It is not updated too often, but it does give an idea of all the settings and some ways to play around with ImageMagick in an iOS application.

      -

      Windows Binary Release

      +

      Windows Binary Release

      ImageMagick runs on Windows 10 (x86 & x64), Windows 8 (x86 & x64), Windows 7 (x86 & x64), Windows Server 2012, Windows XP (x86) with Service Pack 3, Windows Vista (x86 & x64) with Service Pack 2, Windows Server 2003 (x86 & x64) with Service Pack 2 (verify MSXML6 is present), Windows Server 2003 R2 (x86 & x64), Windows Server 2008 (x86 & x64) with Service Pack 2, and Windows Server 2008 R2 (x64).

      @@ -297,7 +299,7 @@ display logo.gif

      The Windows version of ImageMagick is self-installing. Simply click on the appropriate version below and it will launch itself and ask you a few installation questions. Versions with Q8 in the name are 8 bits-per-pixel component (e.g. 8-bit red, 8-bit green, etc.), whereas, Q16 in the filename are 16 bits-per-pixel component. A Q16 version permits you to read or write 16-bit images without losing precision but requires twice as much resources as the Q8 version. Versions with dll in the filename include ImageMagick libraries as dynamic link libraries. Unless you have a Windows 32-bit OS, we recommend this version of ImageMagick for 64-bit Windows:

      -
    Version
    +
    @@ -307,9 +309,9 @@ display logo.gif - - - + + +
    Version
    ImageMagick-7.0.5-10-Q16-x64-dll.exedownloaddownloadImageMagick-7.0.6-0-Q16-x64-dll.exedownloaddownload Win64 dynamic at 16 bits-per-pixel component
    @@ -317,7 +319,7 @@ display logo.gif

    Or choose from these alternate Windows binary distributions:

    - +
    @@ -327,93 +329,93 @@ display logo.gif - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + +
    Version
    ImageMagick-7.0.5-10-Q16-x64-static.exedownloaddownloadImageMagick-7.0.6-0-Q16-x64-static.exedownloaddownload Win64 static at 16 bits-per-pixel component
    ImageMagick-7.0.5-10-Q8-x64-dll.exedownloaddownloadImageMagick-7.0.6-0-Q8-x64-dll.exedownloaddownload Win64 dynamic at 8 bits-per-pixel component
    ImageMagick-7.0.5-10-Q8-x64-static.exedownloaddownloadImageMagick-7.0.6-0-Q8-x64-static.exedownloaddownload Win64 static at 8 bits-per-pixel component
    ImageMagick-7.0.5-10-Q16-HDRI-x64-dll.exedownloaddownloadImageMagick-7.0.6-0-Q16-HDRI-x64-dll.exedownloaddownload Win64 dynamic at 16 bits-per-pixel component with high dynamic-range imaging enabled
    ImageMagick-7.0.5-10-Q16-HDRI-x64-static.exedownloaddownloadImageMagick-7.0.6-0-Q16-HDRI-x64-static.exedownloaddownload Win64 static at 16 bits-per-pixel component with high dynamic-range imaging enabled
    ImageMagick-7.0.5-10-Q16-x86-dll.exedownloaddownloadImageMagick-7.0.6-0-Q16-x86-dll.exedownloaddownload Win32 dynamic at 16 bits-per-pixel component
    ImageMagick-7.0.5-10-Q16-x86-static.exedownloaddownloadImageMagick-7.0.6-0-Q16-x86-static.exedownloaddownload Win32 static at 16 bits-per-pixel component
    ImageMagick-7.0.5-10-Q8-x86-dll.exedownloaddownloadImageMagick-7.0.6-0-Q8-x86-dll.exedownloaddownload Win32 dynamic at 8 bits-per-pixel component
    ImageMagick-7.0.5-10-Q8-x86-static.exedownloaddownloadImageMagick-7.0.6-0-Q8-x86-static.exedownloaddownload Win32 static at 8 bits-per-pixel component
    ImageMagick-7.0.5-10-Q16-HDRI-x86-dll.exedownloaddownloadImageMagick-7.0.6-0-Q16-HDRI-x86-dll.exedownloaddownload Win32 dynamic at 16 bits-per-pixel component with high dynamic-range imaging enabled
    ImageMagick-7.0.5-10-Q16-HDRI-x86-static.exedownloaddownloadImageMagick-7.0.6-0-Q16-HDRI-x86-static.exedownloaddownload Win32 static at 16 bits-per-pixel component with high dynamic-range imaging enabled
    ImageMagick-7.0.5-10-portable-Q16-x86.zipdownloaddownloadImageMagick-7.0.6-0-portable-Q16-x86.zipdownloaddownload Portable Win32 static at 16 bits-per-pixel component. Just copy to your host and run (no installer, no Windows registry entries).
    ImageMagick-7.0.5-10-portable-Q16-x64.zipdownloaddownloadImageMagick-7.0.6-0-portable-Q16-x64.zipdownloaddownload Portable Win64 static at 16 bits-per-pixel component. Just copy to your host and run (no installer, no Windows registry entries).
    @@ -422,24 +424,24 @@ display logo.gif

    To verify ImageMagick is working properly, type the following in an Command Prompt window:

    -
    +
    
     magick logo: logo.gif
     magick identify logo.gif
     magick logo.gif win:
    -
    +

    If you have any problems, you likely need vcomp120.dll. To install it, download Visual C++ 2013 Redistributable Package.

    Note, use a double quote (") rather than a single quote (') for the ImageMagick command line under Windows:

    -
    +
    
     magick "e:/myimages/image.png" "e:/myimages/image.jpg"
    -
    +

    Use two double quotes for VBScript scripts:

    -
    +
    
     Set objShell = wscript.createobject("wscript.shell")
     objShell.Exec("magick ""e:/myimages/image.png"" ""e:/myimages/image.jpg""")
    -
    +

    Congratulations, you have a working ImageMagick distribution under Windows and you are ready to use ImageMagick to convert, compose, or edit your images or perhaps you'll want to use one of the Application Program Interfaces for C, C++, Perl, and others.

    @@ -464,4 +466,4 @@ objShell.Exec("magick ""e:/myimages/image.png"" ""e:/myimages/image.jpg""") - \ No newline at end of file + \ No newline at end of file diff --git a/www/escape.html b/www/escape.html index c9ad4421c..77e745751 100644 --- a/www/escape.html +++ b/www/escape.html @@ -25,14 +25,13 @@ - - - + + + - + -
    (adsbygoogle = window.adsbygoogle || []).push({}); -
    +

    There are copious amounts of extra data associated with images (metadata), beyond the actual image pixels. This metadata can be useful, either for display, or for various calculations, or in modifying the behavior of later image processing operations. You can utilize percent escapes in a number of options, for example in -format or in montage -label, to print various properties and other settings associated with an image.

    @@ -95,7 +95,7 @@
    -

    Percent Escape Handling

    +

    Percent Escape Handling

    If you request a percent escape such as %[key] the setting is looked for in the following order until the first match has been @@ -126,20 +126,20 @@ insensitive manner.

    free-form string tables directly, allowing you to override the above sequence, and avoid accessing an attribute or property of the same name.

    -
    +
    
     %[artifact:setting]
     %[option:setting]
    -
    +
    -

    Single Letter Attribute Percent Escapes

    +

    Single Letter Attribute Percent Escapes

    Here are common single letter escapes (short form) is used to report the most common attributes and properties of an image, such as: the image filename filename, type, width, height.

    - +
    @@ -333,10 +333,10 @@ filename, type, width, height.

    Here is a sample command and its output for an image with filename bird.miff and whose width is 512 and height is 480.

    -
    +
    
     -> identify -format "%m:%f %wx%h" bird.miff
     MIFF:bird.miff 512x480
    -
    +

    Note that all single letter percent escapes can also be used using long form (from IM version 6.7.6-9, see next). For example %[f] is @@ -351,13 +351,13 @@ is after a number. For example, 10%x10 does not expand the

    Also be warned that calculated attributes can take some time to generate, especially for large images.

    -

    Long Form Attribute Percent Escapes

    +

    Long Form Attribute Percent Escapes

    In addition to the above specific and calculated attributes are recognized when enclosed in braces (long form):

    -
    \n newline
    +
    @@ -544,7 +544,7 @@ when enclosed in braces (long form):

    %[base] base filename, no suffixes (as %t)
    -

    Properties

    +

    Properties

    All other long forms of percent escapes (not single letter long form) are handled in a case insensitive manner. Such escapes will will attempt to look @@ -572,7 +572,7 @@ href="command-line-options.html#set" >-set. images when write, if the image file format allows.

    -

    Artifacts and Options

    +

    Artifacts and Options

    The previous percent escapes are associated with the primary Attributes and Properties. Which is the original and primary focus of such percent escapes. @@ -631,56 +631,56 @@ Options, only per-image Artifacts.

    Artifact.

    -

    Glob-Pattern Listing of Properties, Artifacts and Options

    +

    Glob-Pattern Listing of Properties, Artifacts and Options

    The setting can contain a glob pattern. As such you can now list all free-form string properties, artifacts, and options, (but not specific image attributes) using...

    -
    +
    
     convert ... \
        -print "__Properties__\n%[*]" \
        -print "__Artifacts__\n%[artifact:*]" \
        -print "__Options__\n%[option:*]" \
        ...
    -
    +

    The format of glob patterns are very specific and as such is generally only used to list specific settings, such as when debugging, rather than being used for image processing use.

    -

    Calculated Percent Escape Prefixes

    +

    Calculated Percent Escape Prefixes

    There are some special prefixes (before the first ':') which performs calculations based on the user provided string that follows that prefix. For example you can do a numerical calculation use %[fx:...] to evaluate the given FX expressions:

    -
    +
    
     %[fx:expression]
    -
    +

    Use pixel: or hex: to evaluate a pixel color as defined by the FX expression:

    -
    +
    
     %[pixel:expression]
    -
    +
    -

    Specific Profile Percent Escape Prefixes

    +

    Specific Profile Percent Escape Prefixes

    You can also use the following special formatting syntax to print EXIF mage meta-data that was included in the image read in:

    -
    +
    
     %[EXIF:tag]
    -
    +

    Choose tag from the following:

    -
    +
    
     *  (print all EXIF tags, in keyword=data format)
     !  (print all EXIF tags, in tag_number data format)
     #hhhh (print data for EXIF tag #hhhh)
    @@ -766,7 +766,7 @@ ExposureIndex
     SensingMethod
     FileSource
     SceneType
    -
    +

    Surround the format specification with quotation marks to prevent your shell from misinterpreting any spaces and square brackets.

    @@ -774,9 +774,9 @@ shell from misinterpreting any spaces and square brackets.

    The following special formatting syntax can be used to print IPTC information contained in the file:

    -
    +
    
     %[IPTC:dataset:record]
    -
    +

    Select dataset and record from the following:

    @@ -866,7 +866,7 @@ ObjectData Record Post ObjectData Descriptor Record 9:10 Confirmed ObjectData Size - +