Manualinux
http://www.nvu.com http://www.gimp.org InicioPresentaciónActualizacionesManualesDescargasNoticiasAgradecimientoEnlaces

Entornos GráficosAplicaciones

DesarrolloEmuladoresInternetJuegosMultimediaSistema

GráficosSonidoVídeo

Instalar Image Analyzer con WineInstalar MAGIX Photo Designer con Wine

Instalar ImageMagick desde cero




Instalar ImageMagick desde cero




Copyright

Copyright © José Luis Lara Carrascal  2015-2017   http://manualinux.eu



Sumario

Introducción
Instalación
ImageMagick 6
Iniciamos ImageMagick
Enlaces



Introducción  

ImageMagick
es un conjunto de programas de línea de comandos, orientado a la edición, creación, conversión y composición de archivos de imagen. Soporta más de 200 formatos gráficos y uno de sus componentes, convert, es el programa utilizado por defecto en los manuales de esta web, para crear los iconos que el paquete no proporciona de forma nativa. Además de estar referenciado también, en manuales como el del filtro IM para Gimp. Era evidente que más tarde, o más temprano, ImageMagick tenía que estar documentado en este sitio web.



Instalación

Dependencias

Herramientas de Compilación


Entre paréntesis la versión con la que se ha compilado ImageMagick para la elaboración de este documento.

* GCC - (7.2.0) o Clang - (5.0.0)
* Gawk - (4.1.4)
* M4 - (1.4.18)
* Libtool - (2.4.6)
* Make - (4.2.1)
* Automake - (1.15.1)
* Autoconf - (2.69)
* Pkg-config - (0.29.2)

Librerías de Desarrollo

* Xorg - (7.7 / xorg-server 1.19.3)
   LibX11 - (1.6.5)
   LibXext - (1.3.3)
   LibXt - (1.1.5)
* Cairo - (1.14.10)
* DjVULibre - (3.5.27)
* Fftw3 - (3.3.6-pl2)
* Fontconfig - (2.12.4)
* Freetype2 - (2.8)
* Ghostscript - (9.21)
* Graphviz - (2.40.1)
* Jbig2dec - (0.11)
* Libbzip2 - (1.0.6)
* Libjpeg - (9b)
* Liblcms - (2.8)
* Libpng - (1.6.32)
* LibRaw - (0.18.2)
* Librsvg - (2.40.18)
* Libtiff - (4.0.8)
* Libwebp - (0.6.0)
* Libwmf - (0.2.8)
* Libxml2 - (2.9.4)
* Liquid Rescale Library - (0.4.2)
* OpenEXR - (2.2.0)
* OpenJPEG - (2.2.0)
* Pango - (1.40.12)
* XZ Utils - (5.2.3)
* Zlib - (1.2.11)

Intérpretes de Lenguaje de Programación

* Perl - (5.26.0)



Descarga

ImageMagick-7.0.7-3.tar.xz

Optimizaciones

$ export {C,CXX}FLAGS='-O3 -march=amdfam10 -mtune=amdfam10'

Donde pone amdfam10 se indica el procesador respectivo de cada sistema seleccionándolo de la siguiente tabla:
Nota informativa sobre las optimizaciones para GCC
* La opción '-march=' establece el procesador mínimo con el que funcionará el programa compilado, la opción '-mtune=' el procesador específico para el que será optimizado. 

* Los valores separados por comas, son equivalentes, es decir, que lo mismo da poner '-march=k8' que '-march=athlon64'.

* En versiones de GCC 3.2 e inferiores se utiliza la opción '-mcpu=' en lugar de '-mtune='.
Nota informativa sobre las optimizaciones para Clang
* La opción '-mtune=' está soportada a partir de la versión 3.4 de Clang.

* Los valores de color azul no son compatibles con Clang.

* Las filas con el fondo de color amarillo son valores exclusivos de Clang, y por lo tanto, no son aplicables con GCC.
Valores CPU
Genéricos
generic Produce un código binario optimizado para la mayor parte de procesadores existentes. Utilizar este valor si no sabemos el nombre del procesador que tenemos en nuestro equipo. Este valor sólo es aplicable en la opción '-mtune=', si utilizamos GCC. Esta opción está disponible a partir de GCC 4.2.
native Produce un código binario optimizado para el procesador que tengamos en nuestro sistema, siendo éste detectado utilizando la instrucción cpuid. Procesadores antiguos pueden no ser detectados utilizando este valor. Esta opción está disponible a partir de GCC 4.2.
Intel
atom Intel Atom con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3 y extensiones 64-bit. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición bonnell.
bonnell Intel Bonnell con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3 y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9.
broadwell Intel Broadwell con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9 y Clang 3.6.
cannonlake Intel Cannonlake con soporte de instrucciones X87, MMX, AVX, FXSR, CMPXCHG16B, POPCNT, AES, PCLMUL, XSAVE, XSAVEOPT, LAHFSAHF, RDRAND, F16C, FSGSBase, AVX2, BMI, BMI2, FMA, LZCNT, MOVBE, INVPCID, VMFUNC, RTM, HLE, SlowIncDec, ADX, RDSEED, SMAP, MPX, XSAVEC, XSAVES, SGX, CLFLUSHOPT, AVX512, CDI, DQI, BWI, VLX, PKU, PCOMMIT, CLWB, VBMI, IFMA y SHA. Esta opción está disponible a partir de Clang 3.9.
core2 Intel Core2 con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3 y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.3.
core-avx2 Intel Core (Haswell). Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición haswell.
core-avx-i Intel Core (ivyBridge) con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AES, PCLMUL, FSGSBASE, RDRND, F16C y extensiones 64-bit. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición ivybridge.
corei7 Intel Core i7 con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 y SSE4.2 y extensiones 64-bit. Soporta también los procesadores Intel Core i3 e i5. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición nehalem.
corei7-avx Intel Core i7 con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AES y PCLMUL y extensiones 64-bit. Soporta también los procesadores Intel Core i3 e i5. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición sandybridge.
goldmont Intel Goldmont con soporte de instrucciones X87, MMX, SSE42, FXSR, CMPXCHG16B, MOVBE, POPCNT, PCLMUL, AES, PRFCHW, CallRegIndirect, SlowLEA, SlowIncDec, SlowBTMem, LAHFSAHF, MPX, SHA, RDSEED, XSAVE, XSAVEOPT, XSAVEC, XSAVES y CLFLUSHOPT. Esta opción está disponible a partir de Clang 5.
haswell Intel Haswell con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9.
i386 Intel i386.
i486 Intel i486.
i586, pentium Intel Pentium sin soporte de instrucciones MMX.
i686 Produce un código binario optimizado para la mayor parte de procesadores compatibles con la serie 80686 de Intel. Todos los actuales lo son.
intel Intel Haswell y Silvermont. Este valor sólo es aplicable en la opción '-mtune='. Esta opción está disponible a partir de GCC 4.9.
ivybridge Intel Ivy Bridge con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AES, PCLMUL, FSGSBASE, RDRND, F16C y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9.
knl Intel Knights Landing con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, AVX512F, AVX512PF, AVX512ER y extensiones 64-bit. Esta opción está disponible a partir de GCC 5 y Clang 3.4.
lakemont Intel Quark Lakemont MCU, basado en el procesador Intel Pentium. Esta opción está disponible a partir de GCC 6 y Clang 3.9.
nehalem Intel Nehalem con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9.
nocona Versión mejorada de Intel Pentium4 con soporte de instrucciones MMX, SSE, SSE2, SSE3 y extensiones 64-bit.
penryn Intel Penryn con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3 y SSE4.1.
pentiumpro Intel PentiumPro.
pentium2 Intel Pentium2 basado en PentiumPro con soporte de instrucciones MMX.
pentium3, pentium3m Intel Pentium3 basado en PentiumPro con soporte de instrucciones MMX y SSE.
pentium4, pentium4m Intel Pentium4 con soporte de instrucciones MMX, SSE y SSE2.
pentium-m Versión de bajo consumo de Intel Pentium3 con soporte de instrucciones MMX, SSE y SSE2. Utilizado por los portátiles Centrino.
pentium-mmx Intel PentiumMMX basado en Pentium con soporte de instrucciones MMX.
prescott Versión mejorada de Intel Pentium4 con soporte de instrucciones MMX, SSE, SSE2 y SSE3.
sandybridge Intel Sandy Bridge con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AES, PCLMUL y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9 y Clang 3.6.
silvermont Intel Silvermont con soporte de instrucciones MOVBE, MMX, SSE, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMU, RDRND y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9 y Clang 3.6.
skx Intel Skylake Server con soporte de instrucciones X87, MMX, AVX, FXSR, CMPXCHG16B, POPCNT, AES, PCLMUL, XSAVE, XSAVEOPT, LAHFSAHF, RDRAND, F16C, FSGSBase, AVX2, BMI, BMI2, FMA, LZCNT, MOVBE, INVPCID, VMFUNC, RTM, HLE, SlowIncDec, ADX, RDSEED, SMAP, MPX, XSAVEC, XSAVES, SGX, CLFLUSHOPT, AVX512, CDI, DQI, BWI, VLX, PKU, PCOMMIT y CLWB. Esta opción está disponible a partir de Clang 3.5. A partir de Clang 3.9 se utiliza también la definición skylake-avx512.
skylake Intel Skylake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES y extensiones 64-bit. Esta opción está disponible a partir de GCC 6 y Clang 3.6.
skylake-avx512 Intel Skylake Server con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD y extensiones 64-bit. Esta opción está disponible a partir de GCC 6 y Clang 3.9
slm Intel Silvermont con soporte de instrucciones X87, MMX, SSE42, FXSR, CMPXCHG16B, MOVBE, POPCNT, PCLMUL, AES, SlowDivide64, CallRegIndirect, PRFCHW, SlowLEA, SlowIncDec, SlowBTMem y LAHFSAHF. Esta opción está disponible a partir de Clang 3.4. A partir de Clang 3.9 se utiliza también la definición silvermont.
westmere Intel Westmere con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9.
yonah Procesadores basados en la microarquitectura de Pentium M, con soporte de instrucciones MMX, SSE, SSE2 y SSE3.
AMD
amdfam10, barcelona Procesadores basados en AMD Family 10h core con soporte de instrucciones x86-64 (MMX, SSE, SSE2, SSE3, SSE4A, 3DNow!, enhanced 3DNow!, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.3. La definición barcelona está disponible a partir de Clang 3.6.
athlon, athlon-tbird AMD Athlon con soporte de instrucciones MMX, 3DNow!, enhanced 3DNow! y SSE prefetch.
athlon4, athlon-xp, athlon-mp Versiones mejoradas de AMD Athlon con soporte de instrucciones MMX, 3DNow!, enhanced 3DNow! y full SSE.
bdver1 Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (FMA4, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.7.
bdver2 Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (BMI, TBM, F16C, FMA, LWP, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.7.
bdver3 Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (FMA4, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.8 y Clang 3.4.
bdver4 Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (BMI, BMI2, TBM, F16C, FMA, FMA4, FSGSBASE, AVX, AVX2, XOP, LWP, AES, PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.9 y Clang 3.5.
btver1 Procesadores basados en AMD Family 14h core con soporte de instrucciones x86-64 (MMX, SSE, SSE2, SSE3, SSE4A, CX16, ABM y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.6.
btver2 Procesadores basados en AMD Family 16h core con soporte de instrucciones x86-64 (MOVBE, F16C, BMI, AVX, PCL_MUL, AES, SSE4.2, SSE4.1, CX16, ABM, SSE4A, SSSE3, SSE3, SSE2, SSE, MMX y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.8.
geode AMD integrado con soporte de instrucciones MMX y 3DNow!. Esta opción está disponible a partir de GCC 4.3.
k6 AMD K6 con soporte de instrucciones MMX.
k6-2, k6-3 Versiones mejoradas de AMD K6 con soporte de instrucciones MMX y 3DNow!.
k8, opteron, athlon64, athlon-fx Procesadores basados en AMD K8 core con soporte de instrucciones x86-64 (MMX, SSE, SSE2, 3DNow!, enhanced 3DNow! y extensiones 64-bit).
k8-sse3, opteron-sse3, athlon64-sse3 Versiones mejoradas de AMD K8 core con soporte de instrucciones SSE3. Esta opción está disponible a partir de GCC 4.3.
x86-64 Procesadores AMD y compatibles con soporte de instrucciones x86-64, SSE2 y extensiones 64-bit.
znver1 Procesadores basados en AMD Family 17h core con soporte de instrucciones x86-64 (BMI, BMI2, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT y extensiones 64-bit). Esta opción está disponible a partir de GCC 6 y Clang 4.
VIA
c3 VIA C3 con soporte de instrucciones MMX y 3DNow! (no se implementa planificación para este chip).
c3-2 VIA C3-2 (Nehemiah/C5XL) con soporte de instrucciones MMX y SSE (no se implementa planificación para este chip).
c7 VIA C7 (Esther) con soporte de instrucciones MMX, SSE, SSE2 y SSE (no se implementa planificación para este chip). Esta opción está disponible a partir de GCC 7.
eden-x2 VIA Eden X2 con soporte de instrucciones x86-64, MMX, SSE, SSE2 y SSE3 (no se implementa planificación para este chip). Esta opción está disponible a partir de GCC 7.
eden-x4 VIA Eden X4 con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX y AVX2 (no se implementa planificación para este chip). Esta opción está disponible a partir de GCC 7.
esther VIA Eden Esther con soporte de instrucciones MMX, SSE, SSE2 y SSE3 (no se implementa planificación para este chip). Esta opción está disponible a partir de GCC 7.
nano VIA Nano genérico con soporte de instrucciones x86-64, MMX, SSE, SSE2, SSE3 y SSSE3 (no se implementa planificación para este chip). Esta opción está disponible a partir de GCC 7.
nano-1000 VIA Nano 1xxx con soporte de instrucciones x86-64, MMX, SSE, SSE2, SSE3 y SSSE3 (no se implementa planificación para este chip). Esta opción está disponible a partir de GCC 7.
nano-2000 VIA Nano 2xxx con soporte de instrucciones x86-64, MMX, SSE, SSE2, SSE3 y SSSE3 (no se implementa planificación para este chip). Esta opción está disponible a partir de GCC 7.
nano-3000 VIA Nano 3xxx con soporte de instrucciones x86-64, MMX, SSE, SSE2, SSE3, SSSE3 y SSE4.1 (no se implementa planificación para este chip). Esta opción está disponible a partir de GCC 7.
nano-x2 VIA Nano Dual Core con soporte de instrucciones x86-64, MMX, SSE, SSE2, SSE3 y SSSE3 (no se implementa planificación para este chip). Esta opción está disponible a partir de GCC 7.
nano-x4 VIA Nano Quad Core con soporte de instrucciones x86-64, MMX, SSE, SSE2, SSE3 y SSSE3 (no se implementa planificación para este chip). Esta opción está disponible a partir de GCC 7.
IDT
winchip2 IDT Winchip2, que equivale a un i486 con soporte de instrucciones MMX y 3DNow!.
winchip-c6 IDT Winchip C6, que equivale a un i486 con soporte de instrucciones MMX.

Optimizaciones adicionales

Optimizaciones adicionales
GCC
Graphite
$ export {C,CXX}FLAGS+=' -floop-interchange -ftree-loop-distribution -floop-strip-mine -floop-block'
OpenMP
$ export {C,CXX}FLAGS+=' -ftree-parallelize-loops=2'
Donde pone 2 se indica el número de núcleos de nuestro procesador, si sólo tiene uno, no utilizar esta optimización. 
LTO
$ export AR=gcc-ar; export RANLIB=gcc-ranlib; export NM=gcc-nm
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=2'
Donde pone 2 se indica el número de núcleos de nuestro procesador, si sólo tiene uno, utilizar el parámetro -flto

Clang
Polly
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine -mllvm -polly-parallel -mllvm -polly-position=before-vectorizer'
OpenMP
$ export {C,CXX}FLAGS+=' -fopenmp=libomp'
LTO
$ export AR=llvm-ar; export RANLIB=llvm-ranlib; export NM=llvm-nm
$ export {C,CXX,LD}FLAGS+=' -flto'
ThinLTO
$ export AR=llvm-ar; export RANLIB=llvm-ranlib; export NM=llvm-nm
$ export {C,CXX,LD}FLAGS+=' -flto=thin'
La aplicación de esta optimización es alternativa a la tradicional LTO, a partir de Clang 3.9, y por lo tanto, no es combinable con la misma.

Parámetros adicionales

Parámetros adicionales de eliminación de avisos específicos en el proceso de compilación
Clang
$ export {C,CXX}FLAGS+=' -Qunused-arguments'

Establecer el RPATH correspondiente si utilizamos una versión de GCC que no es la principal del sistema
$ export LDFLAGS+=" -Wl,-rpath,/opt/gcc7/lib -lstdc++ -latomic -lgomp"
Sustituir /opt/gcc7/lib por la ruta de instalación de la versión de GCC alternativa que se vaya a utilizar en el proceso de compilación de este paquete. El parámetro -lgomp se añade para poder enlazar correctamente los binarios, si los compilamos con soporte de OpenMP. Si compilamos el paquete con Clang, omitiremos este parámetro.

Establecer la variable de entorno de uso de compilador para Clang
$ export {CC,CXX}=clang
Si utilizamos Clang con Ccache, tendremos que establecer la variable de entorno correspondiente de Ccache de uso de compilador.
$ export CCACHE_CC=clang

Extracción y Configuración  Bloc de Notas Información general sobre el uso de los comandos

$ tar Jxvf ImageMagick-7.0.7-3.tar.xz
$ cd ImageMagick-7.0.7-3
$ ./configure --disable-dependency-tracking --prefix=/usr --sysconfdir=/etc \
--with-libstdc=/opt/gcc7/lib --with-modules --with-gslib \
--with-rsvg=yes --with-perl --with-gvc --disable-static
$ find . -name "Makefile" -o -name "*.pc" -type f | xargs sed -i 's:-lgomp:-lomp:g'

Explicación de los comandos

--disable-dependency-tracking : Acelera el tiempo de compilación.

--prefix=/usr
: Instala el programa en el directorio principal /usr.

--sysconfdir=/etc : Instala los archivos de configuración en /etc/ImageMagick-7, en lugar de /usr/etc/ImageMagick-7.

--with-libstdc=/opt/gcc7/lib : Le indicamos la ruta de instalación de Libstdc++, en el caso de que utilicemos otra versión de GCC diferente a la principal del sistema.

--with-modules : Compila el soporte de módulos compartidos en lugar de integrarlos de forma estática en los binarios ejecutables del paquete.

--with-gslib : Activa el soporte de Libgs de Ghostscript.

--with-rsvg=yes : Activa el soporte de imágenes en formato SVG mediante el uso de Librsvg. Si no añadimos esta opción, se utilizará Cairo para compilar el soporte de este formato de imagen.

--with-perl : Activa la compilación e instalación de PerlMagic.

--with-gvc : Activa el soporte de Graphviz.

--disable-static : Desactiva la compilación de las librerías estáticas, al no ser necesarias para la ejecución de los programas.

find . -name "Makefile" -o -name "*.pc" -type f | xargs sed -i 's:-lgomp:-lomp:g' : Modificamos los archivos Makefile creados para evitar que los binarios se enlacen contra la librería Libgomp de GCC, en el caso de que utilicemos Clang para compilar el paquete, y se enlacen sólo contra la librería Libomp proporcionada por LLVM. También modificamos los archivos de configuración que se instalan para Pkg-config, para que aparezca de forma correcta esta librería en los mismos.

Parámetros de configuración opcionales

--enable-opencl : Activa la aceleración por hardware mediante el uso de la GPU, en tarjetas gráficas que soporten OpenCL. Es necesario que el controlador gráfico lo soporte también.

Compilación

$ make

Parámetros de compilación opcionales

V=1 : Muestra más información en el proceso de compilación.

-j2 : Si tenemos un procesador de doble núcleo (dual-core), y el kernel está optimizado para el mismo y es SMP, con este parámetro aumentaremos el número de procesos de compilación simultáneos a un nivel de 2 y aceleraremos el tiempo de compilación del programa de forma considerable.
-j4 : Lo mismo que arriba pero con procesadores de 4 núcleos (quad-core).

Instalación como root

$ su
# make install-strip
# ldconfig -v

Estadísticas de Compilación e Instalación de ImageMagick

Estadísticas de Compilación e Instalación de ImageMagick
CPU AMD Athlon(tm) II X2 260 Processor
MHz 3214.610
RAM 4096 MB
Tarjeta gráfica GeForce GT 710
Controlador de gráficos Nouveau 1.0.15
Sistema de archivos XFS
Versión de Glibc 2.25
Enlazador dinámico GNU gold (Binutils 2.29) 1.14
Compilador Clang 5.0.0 + Ccache 3.3.4
Parámetros de optimización -03 -march=amdfam10 -mtune=amdfam10 -mllvm -polly -mllvm -polly-vectorizer=stripmine -mllvm -polly-parallel -mllvm -polly-position=before-vectorizer -fopenmp=libomp -flto=thin
Parámetros de compilación V=1 -j2
Tiempo de compilación 6' 19"
Archivos instalados 1.519
Mostrar/Ocultar la lista de archivos instalados
Enlaces simbólicos creados 18
Mostrar/Ocultar la lista de enlaces simbólicos creados
Ocupación de espacio en disco 25,3 MB

Aplicaciones instaladas

Aplicaciones instaladas
Ejecutable
Descripción
magick Es el nuevo programa principal y único binario ejecutable a partir de la versión 7 de ImageMagick. El resto de ejecutables que existían en la versión 6, se han convertido en enlaces simbólicos que apuntan a éste, mostrando las opciones particulares de cada uno cuando los ejecutamos, y preservando la compatibilidad nominal con los de la versión 6. Digamos que se adopta el mismo modo de funcionamiento que el otro proyecto derivado de ImageMagick, GraphicsMagick. Todos los comandos siguientes en esta tabla se pueden invocar también desde este mismo comando: magick animate, magick convert, magick compare, etc.

Un ejemplo:

magick -resize 1024 fondo-120.jpg fondo-120a.jpg
magick-script Nuevo comando introducido a partir de la versión 7 de ImageMagick que sirve para crear scripts de ejecución, encabezados con la variable de entorno con el nombre del programa. Un ejemplo:

#!/bin/env magick-script
-size 100x100 xc:red ( rose: -rotate -90 ) +append  -write show:
animate
Anima una secuencia de imágenes en cualquier servidor X. Es el programa de ImageMagick utilizado para visualizar animaciones en formato GIF. También se puede utilizar para visualizar un directorio de imágenes en modo presentación. Un ejemplo:

animate -delay 200 ~/Fondos/*.jpg

El retardo (-delay 200) se mide siempre en milisegundos. 
compare Compara matemática y visualmente la diferencia entre una imagen y el resultado de su manipulación. Si por ejemplo, aplicamos un filtro de nitidez con convert a una imagen, este programa puede comparar la imagen original con la imagen resultante del comando anterior, dando lugar a una imagen como resultado con las zonas de la imagen original afectadas por la aplicación del filtro de color rojo. Un ejemplo:

convert ejemplo.jpg -sharpen 0x1 resultado.jpg
compare ejemplo.jpg resultado.jpg diferencias.png

Y la comparación matemática se obtiene con el siguiente comando (admite también otros):

compare -verbose -metric mae imagen.jpg resultado.jpg diferencias.png
composite Comando que superpone una imagen sobre otra. El ejemplo que pongo a continuación lo extraigo del manual de FF Multi Converter, en el que se crea una imagen transparente con convert de 256x256 píxeles y posteriormente se fusiona con el icono del paquete, centrando éste en el medio con el comando composite con la opción 'gravity center'.

convert -size 256x256 canvas:none -alpha transparent fondo.png
composite -gravity center share/ffmulticonverter.png fondo.png \
share/ffmulticonverter.png

conjure Comando que lee y ejecuta scripts escritos en el lenguaje de programación, Magick Scripting Language (MSL). 
convert Era el programa más utilizado de ImageMagick hasta la versión 7, por lo menos en esta web. Permite convertir entre diferentes formatos de imagen, redimensionar imágenes, aplicar filtros, etc. El programa siempre requiere de una imagen de entrada y otra de salida. Para leer de la entrada estándar o enviar a la salida estándar tiene que añadirse el guión (-) detrás del comando. Un ejemplo:

convert -resize 1024 fondo-120.jpg fondo-120a.jpg
display Muestra una imagen o secuencia de imágenes a pantalla completa o en una ventana. Si lo ejecutamos sin argumentos se mostrará la ventana de ImageMagick, desde la que podremos acceder al menú del mismo, que en ningún momento llega a las posibilidades que ofrece la línea de comandos.

Este programa no soporta pseudotransparencias, con lo que su uso como setter para poner imágenes en el fondo de la pantalla queda muy limitado. 
identify Muestra información del formato y las características de una imagen o grupo de imágenes.
import Realiza una captura de pantalla del escritorio, una ventana determinada, o una zona rectangular seleccionada de la pantalla. Varios ejemplos:

1) Capturar cualquier zona de la pantalla seleccionándola con el puntero del ratón o haciendo clic en el fondo o en una ventana, guardando la imagen en formato JPEG con una calidad del 90 %. Si es una ventana, con el parámetro -frame, capturaremos también el marco de la misma.

import -frame -quality 90 /home/jose/Capturas/captura-001.jpg

2) Capturar el escritorio, guardando la imagen en formato JPEG con una calidad del 90 %.

import -window root -quality 90 /home/jose/Capturas/captura-001.jpg
mogrify Comando que posee las mismas características que convert, pero con una diferencia muy importante, siempre trabaja sobre la imagen original.
montage Comando de composición de imágenes, dando lugar a una imagen en mosaico, a la que se le pueden añadir marcos, nombres de imagen, color de fondo, etc. Basicamente, la función de este comando nos sirve para crear hojas de contacto, de un determinado directorio de imágenes. Un ejemplo:

montage -resize 320 -background '#336699' -geometry +4+4 ~/Fondos/*.jpg montaje.jpg

El parámetro -resize determina el tamaño de las imágenes incluidas en la composición final, -background el color de fondo y -geometry la disposición en columnas y filas de las imágenes.
stream Comando utilizado para extraer píxeles de una imagen, o una determinada porción de la misma.

Directorio de configuración personal

~/.config/ImageMagick Es el directorio de configuración personal de ImageMagick en nuestro home.

Desinstalación como root

1) MODO TRADICIONAL

En el directorio de compilación ejecutamos el siguiente comando:

$ su -c "make uninstall"

2) MODO MANUALINUX

El principal inconveniente del comando anterior es que tenemos que tener el directorio de compilación en nuestro sistema para poder desinstalar el programa. En algunos casos esto supone muchos megas de espacio en disco. Con el paquete de scripts que pongo a continuación logramos evitar el único inconveniente que tiene la compilación de programas, y es el tema de la desinstalación de los mismos sin la necesidad de tener obligatoriamente una copia de las fuentes compiladas.

ImageMagick-7.0.7-3-scripts.tar.gz

$ su
# tar zxvf ImageMagick-7.0.7-3-scripts.tar.gz
# cd ImageMagick-7.0.7-3-scripts
# ./Desinstalar_ImageMagick-7.0.7-3

Copia de Seguridad como root

Con este otro script creamos una copia de seguridad de los binarios compilados, recreando la estructura de directorios de los mismos en un directorio de copias de seguridad (copibin) que se crea en el directorio /var. Cuando se haya creado el paquete comprimido de los binarios podemos copiarlo como usuario a nuestro home y borrar el que ha creado el script de respaldo, teniendo en cuenta que si queremos volver a restaurar la copia, tendremos que volver a copiarlo al lugar donde se ha creado.

$ su
# tar zxvf ImageMagick-7.0.7-3-scripts.tar.gz
# cd ImageMagick-7.0.7-3-scripts
# ./Respaldar_ImageMagick-7.0.7-3

Restaurar la Copia de Seguridad como root

Y con este otro script (que se copia de forma automática cuando creamos la copia de respaldo del programa) restauramos la copia de seguridad como root cuando resulte necesario.

$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_ImageMagick-7.0.7-3



ImageMagick 6

Como la mayoría de paquetes de código fuente que necesitan de ImageMagick para ser compilados, no son compatibles con ImageMagick 7, instalaremos la última versión de la serie anterior, para poder compilar su suporte allí donde sea necesario.

Preliminares

1) Editamos el archivo /etc/ld.so.conf y añadimos /opt/imagemagick-6/lib

include ld.so.conf.d/*.conf

/opt/gcc-4.4.3/lib
/usr/X11R7/lib
/opt/e17/lib
/usr/lib
/opt/imagemagick-6/lib

Instalación

Dependencias

Herramientas de Compilación


Entre paréntesis la versión con la que se ha compilado ImageMagick para la elaboración de este documento.

* GCC - (7.2.0) o Clang - (5.0.0)
* Gawk - (4.1.4)
* M4 - (1.4.18)
* Libtool - (2.4.6)
* Make - (4.2.1)
* Automake - (1.15.1)
* Autoconf - (2.69)
* Pkg-config - (0.29.2)

Librerías de Desarrollo

* Xorg - (7.7 / xorg-server 1.19.3)
   LibX11 - (1.6.5)
   LibXext - (1.3.3)
   LibXt - (1.1.5)
* Cairo - (1.14.10)
* DjVULibre - (3.5.27)
* Fftw3 - (3.3.6-pl2)
* Fontconfig - (2.12.4)
* Freetype2 - (2.8)
* Ghostscript - (9.21)
* Graphviz - (2.40.1)
* Jbig2dec - (0.11)
* Libbzip2 - (1.0.6)
* Libjpeg - (9b)
* Liblcms - (2.8)
* Libpng - (1.6.32)
* LibRaw - (0.18.2)
* Librsvg - (2.40.18)
* Libtiff - (4.0.8)
* Libwebp - (0.6.0)
* Libwmf - (0.2.8)
* Libxml2 - (2.9.4)
* Liquid Rescale Library - (0.4.2)
* OpenEXR - (2.2.0)
* OpenJPEG - (2.2.0)
* Pango - (1.40.12)
* XZ Utils - (5.2.3)
* Zlib - (1.2.11)

Intérpretes de Lenguaje de Programación

* Perl - (5.26.0)



Descarga

ImageMagick-6.9.9-14.tar.xz

Optimizaciones

Optimizaciones adicionales

Optimizaciones adicionales
GCC
Graphite
$ export {C,CXX}FLAGS+=' -floop-interchange -ftree-loop-distribution -floop-strip-mine -floop-block'
OpenMP
$ export {C,CXX}FLAGS+=' -ftree-parallelize-loops=2'
Donde pone 2 se indica el número de núcleos de nuestro procesador, si sólo tiene uno, no utilizar esta optimización. 
LTO
$ export AR=gcc-ar; export RANLIB=gcc-ranlib; export NM=gcc-nm
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=2'
Donde pone 2 se indica el número de núcleos de nuestro procesador, si sólo tiene uno, utilizar el parámetro -flto

Clang
Polly
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine -mllvm -polly-parallel -mllvm -polly-position=before-vectorizer'
OpenMP
$ export {C,CXX}FLAGS+=' -fopenmp=libomp'
LTO
$ export AR=llvm-ar; export RANLIB=llvm-ranlib; export NM=llvm-nm
$ export {C,CXX,LD}FLAGS+=' -flto'
ThinLTO
$ export AR=llvm-ar; export RANLIB=llvm-ranlib; export NM=llvm-nm
$ export {C,CXX,LD}FLAGS+=' -flto=thin'
La aplicación de esta optimización es alternativa a la tradicional LTO, a partir de Clang 3.9, y por lo tanto, no es combinable con la misma.

Parámetros adicionales

Parámetros adicionales de eliminación de avisos específicos en el proceso de compilación
Clang
$ export {C,CXX}FLAGS+=' -Qunused-arguments'

Establecer el RPATH correspondiente si utilizamos una versión de GCC que no es la principal del sistema
$ export LDFLAGS+=" -Wl,-rpath,/opt/gcc7/lib -lstdc++ -lgomp"
Sustituir /opt/gcc7/lib por la ruta de instalación de la versión de GCC alternativa que se vaya a utilizar en el proceso de compilación de este paquete. El parámetro -lgomp se añade para poder enlazar correctamente los binarios, si los compilamos con soporte de OpenMP. Si compilamos el paquete con Clang, omitiremos este parámetro.

Establecer la variable de entorno de uso de compilador para Clang
$ export {CC,CXX}=clang
Si utilizamos Clang con Ccache, tendremos que establecer la variable de entorno correspondiente de Ccache de uso de compilador.
$ export CCACHE_CC=clang

Extracción y Configuración  Bloc de Notas Información general sobre el uso de los comandos

$ tar Jxvf ImageMagick-6.9.9-14.tar.xz
$ cd ImageMagick-6.9.9-14
$ ./configure --disable-dependency-tracking --prefix=/opt/imagemagick-6 \
--with-libstdc=/opt/gcc7/lib --with-modules --with-gslib --with-rsvg=yes \
--with-perl --with-perl-options=INSTALL_BASE=/opt/imagemagick-6 --with-gvc \
--disable-static --enable-hdri
$ find . -name "Makefile" -o -name "*.pc" -type f | xargs sed -i 's:-lgomp:-lomp:g'

Explicación de los comandos

--disable-dependency-tracking : Acelera el tiempo de compilación.

--prefix=/opt/imagemagick-6
: Instala el programa en el directorio /opt/imagemagick-6.

--with-libstdc=/opt/gcc7/lib : Le indicamos la ruta de instalación de Libstdc++, en el caso de que utilicemos otra versión de GCC diferente a la principal del sistema.

--with-modules : Compila el soporte de módulos compartidos en lugar de integrarlos de forma estática en los binarios ejecutables del paquete.

--with-gslib : Activa el soporte de Libgs de Ghostscript.

--with-rsvg=yes : Activa el soporte de imágenes en formato SVG mediante el uso de Librsvg. Si no añadimos esta opción, se utilizará Cairo para compilar el soporte de este formato de imagen.

--with-perl : Activa la compilación e instalación de PerlMagic.

--with-perl-options=INSTALL_BASE=/opt/imagemagick-6 : Instala PerlMagick en la ruta de instalación de ImageMagick 6, en lugar de la predefinida de Perl, para evitar que sobreescriba la versión de PerlMagick de ImageMagick 7.

--with-gvc : Activa el soporte de Graphviz.

--disable-static : Desactiva la compilación de las librerías estáticas, al no ser necesarias para la ejecución de los programas.

--enable-hdri : Activa el soporte de imágenes de alto rango dinámico.

find . -name "Makefile" -o -name "*.pc" -type f | xargs sed -i 's:-lgomp:-lomp:g' : Modificamos los archivos Makefile creados para evitar que los binarios se enlacen contra la librería Libgomp de GCC, en el caso de que utilicemos Clang para compilar el paquete, y se enlacen sólo contra la librería Libomp proporcionada por LLVM. También modificamos los archivos de configuración que se instalan para Pkg-config, para que aparezca de forma correcta esta librería en los mismos.

Parámetros de configuración opcionales

--enable-opencl : Activa la aceleración por hardware mediante el uso de la GPU, en tarjetas gráficas que soporten OpenCL. Es necesario que el controlador gráfico lo soporte también.

Compilación

$ make

Parámetros de compilación opcionales

Instalación como root

$ su
# make install-strip
# ldconfig -v

Estadísticas de Compilación e Instalación de ImageMagick 6

Estadísticas de Compilación e Instalación de ImageMagick 6
CPU AMD Athlon(tm) II X2 260 Processor
MHz 3214.610
RAM 4096 MB
Tarjeta gráfica GeForce GT 710
Controlador de gráficos Nouveau 1.0.15
Sistema de archivos XFS
Versión de Glibc 2.25
Enlazador dinámico GNU gold (Binutils 2.29) 1.14
Compilador Clang 5.0.0 + Ccache 3.3.4
Parámetros de optimización -03 -march=amdfam10 -mtune=amdfam10 -mllvm -polly -mllvm -polly-vectorizer=stripmine -mllvm -polly-parallel -mllvm -polly-position=before-vectorizer -fopenmp=libomp -flto=thin
Parámetros de compilación V=1 -j2
Tiempo de compilación 5' 23"
Archivos instalados 1.479
Mostrar/Ocultar la lista de archivos instalados
Enlaces simbólicos creados 6
Mostrar/Ocultar la lista de enlaces simbólicos creados
Ocupación de espacio en disco 24,6 MB

Desinstalación como root

1) MODO TRADICIONAL

En el directorio de compilación ejecutamos el siguiente comando:

$ su -c "make uninstall"

2) MODO MANUALINUX

ImageMagick-6.9.9-14-scripts.tar.gz

$ su
# tar zxvf ImageMagick-6.9.9-14-scripts.tar.gz
# cd ImageMagick-6.9.9-14-scripts
# ./Desinstalar_ImageMagick-6.9.9-14

Copia de Seguridad como root

$ su
# tar zxvf ImageMagick-6.9.9-14-scripts.tar.gz
# cd ImageMagick-6.9.9-14-scripts
# ./Respaldar_ImageMagick-6.9.9-14

Restaurar la Copia de Seguridad como root

$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_ImageMagick-6.9.9-14

Variables de entorno a establecer para poder compilar los paquetes con ImageMagick 6

$ export PKG_CONFIG_PATH=/opt/imagemagick-6/lib/pkgconfig:$PKG_CONFIG_PATH
$ export PATH=/opt/imagemagick-6/bin:$PATH



Iniciamos ImageMagick

Sólo nos queda teclear en una terminal o en un lanzador el comando display, y el programa aparecerá en la pantalla. La interfaz gráfica es bastante espartana y poco funcional.


Captura- ImageMagick - 1


Captura- ImageMagick - 2




Enlaces


http://imagemagick.org >> La web de ImageMagick.

Filtros de Gimp - IM >> Manual del filtro de Gimp, IM, que nos permite utilizar ImageMagick con este editor de imágenes.


Foro Galería Blog


Actualizado el 18-09-2017

Instalar ImageMagick desde cero

Instalar Image Analyzer con WineInstalar MAGIX Photo Designer con Wine