# ImageMagick

ImageMagick è un software libero multipiattaforma che fornisce una suite di strumenti per la creazione, modifica e visualizzazione di immagini bitmap.

## Storia

Venne creato nel 1987 da John Cristy quando lavorava presso la DuPont, per convertire immagini a 24 bit (16 milioni di colori) in immagini a 8 bit (256 colori), in modo che potessero essere visualizzate sulla maggior parte degli schermi. È stato pubblicato come freeware nel 1990 quando DuPont ha accettato di trasferire il copyright alla società ImageMagick Studio LLC, che è tuttora l'organizzazione che si occupa del progetto.
Nel maggio 2016, è stata scoperta una vulnerabilità attraverso la quale un utente malintenzionato può eseguire codice arbitrario su server che utilizzano l'applicazione per modificare le immagini caricate dall'utente. Gli esperti di sicurezza, inclusi i ricercatori di CloudFlare, hanno osservato l'uso effettivo della vulnerabilità nei tentativi di hacking attivo; il difetto di sicurezza era dovuto al fatto che il software utilizzava degli strumenti di backend senza prima controllare che i nomi dei percorsi e dei file fossero privi di comandi di shell impropri. La vulnerabilità non ha comunque influito sulle distribuzioni di ImageMagick che includevano una security policy configurata correttamente.

## Descrizione

ImageMagick è intercompatibile con almeno un centinaio di formati di immagini per applicare trasformazioni di traslazione, riflessione, rotazione, regolazione dei colori, applicazione di effetti speciali o disegno di testo, linee, poligoni, ellissi o curve di Bézier, ecc. È utilizzabile sia attraverso interfaccia a riga di comando sia nativamente su diversi linguaggi di programmazione utilizzando apposite API.

## Esempi di utilizzo

Seguono alcuni esempi da riga di comando:
Convertire un'immagine dal formato JPEG al PNG:
Ridimensionare un'immagine alla dimensione di 300x200px:
Ridimensionare tutte le immagini con estensione .jpg presenti nella directory corrente ad una larghezza di 300px, calcolando l'altezza per mantenere le proporzioni:
Rimpicciolire un'immagine della metà e cambiarla di formato:

## API

Le interfacce supportate per vari linguaggi di programmazione sono:
| Linguaggio | Interfaccia |
| Ada | G2F |
| C | MagickWand MagickCore |
| Ch | ChMagick |
| COM+ | ImageMagickObject |
| C++ | Magick++ |
| Java | JMagick Im4java |
| LabVIEW | LVOOP ImageMagick |
| Lisp | CL-Magick |
| Neko/haXe | NMagick |
| .NET | MagickNet |
| Pascal | PascalMagick |
| Perl | PerlMagick |
| PHP | MagickWand for PHP IMagick phMagick |
| Python | PythonMagickWand PythonMagick |
| REALbasic | MBS Realbasic ImageMagick |
| Ruby | RMagick MagickWand for Ruby MiniMagick QuickMagick |
| Tcl/Tk | TclMagick |
| RPC XML | RemoteMagick |

## Formati supportati
### Lettura e scrittura

* 8BIM (formato proprietario Adobe Photoshop)
* APP1 (formato proprietario Adobe Photoshop)
* AVS (immagine AVS X)
* BIE (Joint Bi-level Image Experts Group interchange format)
* BMP (Windows bitmap)
* CIN (Kodak Cineon Image Format)
* CMYK (campionatura grezza ciano, magenta, giallo e nero)
* CMYKA (campionatura grezza ciano, magenta, giallo, nero e canale alpha)
* DCX (ZSoft IBM PC Paintbrush multipagina)
* DIB (Windows bitmap)
* DPX (Digital Picture Exchange)
* EPDF (immagina incapsulata in PDF)
* EPI (Adobe Encapsulated PostScript Interchange format)
* EPS (Adobe Encapsulated PostScript)
* EPSF (Adobe Encapsulated PostScript)
* EPSI (Adobe Encapsulated PostScript Interchange format)
* EPT (Adobe Encapsulated PostScript with TIFF preview)
* FAX (Group 3 FAX)
* FITS (Flexible Image Transport System)
* FPX (FlashPix Format)
* G3 (Group 3 FAX)
* GIF (CompuServe graphics interchange format)
* GIF87 (CompuServe graphics interchange format (version 87a))
* GRAY (Raw gray samples (8 or 16 bits, depending on the image depth))
* H (Internal format)
* HTML (HTML con mappa immagine)
* ICB (Truevision Targa image)
* ICM (ICC Color Profile)
* IPTC (IPTC Newsphoto)
* JBG (Joint Bi-level Image experts Group interchange format)
* JBIG (Joint Bi-level Image experts Group interchange format)
* JNG (Multiple-image Network Graphics)
* JP2 (JPEG-2000 JP2 File Format Syntax)
* JPC (JPEG-2000 Code Stream Syntax)
* JPEG (Joint Photographic Experts Group JFIF format)
* JPG (Joint Photographic Experts Group JFIF format)
* LOGO (ImageMagick Logo)
* M2V (MPEG-2 Video Stream)
* MAP (Colormap intensities (8 or 16 bits, depending on the image depth) and indices (8 or 16 bits, depending n whether colors exceeds 256).)
* MIFF (Magick Image File Format)
* MNG (Multiple-image Network Graphics)
* MONO (Bi-level bitmap in least-significant- -byte-first order)
* MPEG (MPEG-1 Video Stream)
* MPG (MPEG-1 Video Stream)
* MSL (Magick Scripting Language)
* MTV (MTV Raytracing image format)
* MVG (Magick Vector Graphics)
* OTB (On-the-air bitmap)
* P7 (Xv thumbnail format)
* PAL (16bit/pixel interleaved YUV)
* PALM (Palm Pixmap format)
* PBM (Portable bitmap format (black and white))
* PCD (Photo CD)
* PCDS (Photo CD)
* PCT (Apple Macintosh QuickDraw/PICT)
* PCX (ZSoft IBM PC Paintbrush)
* PDB (Palm Database ImageViewer Format)
* PDF (Portable Document Format)
* PGM (Portable graymap format (gray scale))
* PICON (Personal Icon)
* PICT (Apple Macintosh QuickDraw/PICT)
* PM (X Window system pixmap (color))
* PNG (Portable Network Graphics)
* PNM (Portable anymap)
* PPM (Portable pixmap format (color))
* PS (Adobe PostScript)
* PS2 (Adobe PostScript livello II)
* PS3 (Adobe PostScript livello III)
* PSD (Adobe Photoshop bitmap)
* PTIF (Pyramid encoded TIFF)
* RAS (SUN Rasterfile)
* RGB (Raw red, green, and blue samples (8 or 16 bits, depending on the image depth))
* RGBA (Raw red, green, blue, and matte samples (8 or 16 bits, depending on the image depth))
* ROSE (70x46 Truecolor test image)
* SGI (Irix RGB image)
* SUN (SUN Rasterfile)
* SVG (Scalable Vector Graphics)
* TEXT (Raw text)
* TGA (Truevision TGA image)
* TIF (Tagged Image File Format)
* TIFF (Tagged Image File Format)
* TXT (Raw text)
* UYVY (16bit/pixel interleaved YUV)
* VDA (Truevision Targa image)
* VICAR (VICAR rasterfile format)
* VID (Visual Image Directory)
* VIFF (Khoros Visualization image)
* VST (Truevision Targa image)
* WBMP (Wireless Bitmap (level 0) image)
* X (X Image)
* XBM (X Window system bitmap (black and white))
* XPM (X Window system pixmap (color))
* XV (Khoros Visualization image)
* XWD (X Window system window dump (color))
* YUV (CCIR 601 4:1:1)

### Sola lettura

* AFM (Adobe font metrics)
* ART (PF1: 1st Publisher)
* AVI (Audio/Visual Interleaved)
* CUT (DR Halo)
* DCM (Digital Imaging and Communications in Medicine image)
* DPS (Display PostScript)
* DPX (Digital Moving Picture Exchange)
* FILE (Uniform Resource Locator)
* FTP (Uniform Resource Locator)
* GRADIENT (Gradual passing from one shade to another)
* GRANITE (Granite texture)
* HTTP (Uniform Resource Locator)
* ICO (Microsoft icon)
* ICON (Microsoft icon IMPLICIT)
* LABEL (Text image format)
* MPR (Magick Persistent Registry)
* MSL (Magick Scripting Language)
* NETSCAPE (Netscape 216 color cube)
* NULL (Constant image of uniform color)
* PDB (Pilot Image Format)
* PFA (Adobe Type 1 font file)
* PFB (Adobe Type 1 font file)
* PFM (Adobe Type 1 font file)
* PIX (Alias/Wavefront RLE image format)
* PLASMA (Plasma fractal image)
* PWP (Seattle Film Works)
* RLA (Alias/Wavefront image)
* RLE (Utah Run length encoded image)
* SCT (Scitex HandShake)
* SFW (Seattle Film Works)
* STEGANO (Steganographic image)
* SVG (Scalable Vector Graphics)
* TILE (Tile image with a texture)
* TIM (PSX TIM)
* TTF (TrueType font)
* WMF (Windows Metafile)
* WPG (WordPerfect Graphics)
* XC (Constant image uniform color)
* XCF (GIMP image)