Articolo tradotto a macchina
Questo testo è una traduzione automatica. È prevista una versione riveduta.
Per creare un PDF, utilizzare la funzione “Stampa” in fondo alla pagina.
Per Web Hosting, Hosting per WordPress e Performance Hosting
ImageMagick è una potente raccolta di strumenti per la riga di comando che possono essere utilizzati per modificare le immagini sul lato server. Ciò consente di automatizzare operazioni quali la conversione, il ridimensionamento o la modifica delle immagini direttamente sullo spazio web. È l'ideale per elaborare i caricamenti nei sistemi di gestione dei contenuti o per adattare dinamicamente le immagini tramite script.
In questo articolo vi presenteremo i casi d'uso più comuni. Imparerete
come eseguire l'elaborazione di base delle immagini (conversione, ridimensionamento) tramite SSH.
- come abilitare il supporto PDF per il vostro spazio web, che è disabilitato per impostazione predefinita per motivi di sicurezza.
- come controllare la conversione PDF in modo sicuro da script PHP.
Prerequisiti
Per poter utilizzare i comandi di questo articolo, è necessario essere connessi al proprio spazio web tramite SSH. Le istruzioni su come stabilire una connessione SSH sono riportate nell'articolo Stabilire una connessione SSH con PuTTY (Windows).
Modifica di base delle immagini tramite SSH
Lo strumento centrale di ImageMagick è ilcomandoconvert. È possibile utilizzare questo comando per modificare le immagini direttamente nel terminale.
Ecco alcuni esempi pratici di applicazione:
Convertire il formato dell'immagine
ImageMagick è in grado di leggere e scrivere immagini in oltre 200 formati, tra cui PNG, JPEG, JPEG 2000, GIF, TIFF, DPX, EXR, WebP, PostScript, PDF e SVG.
Per convertire un'immagine in un altro formato, utilizzare il comando convert secondo lo schema convert <file sorgente> <file destinazione>. Il formato in cui viene convertito il file è determinato dall'estensione del file di destinazione.
Ad esempio, per copiare l'immagine Blume.jpg in formato JPEG in formato PNG, immettere il comando come segue:
converti Blume.jpg Blume.png
Funziona allo stesso modo anche il contrario (PNG → JPEG):
convertire Blume.png Blume.jpg
Ridimensionare l'immagine (cambiare la risoluzione)
È possibile utilizzare ImageMagick anche per modificare la risoluzione e quindi le dimensioni di un'immagine. A tale scopo, utilizzare il comando convert insieme al parametro resize .
Ad esempio, per dimezzare la risoluzione del file immagine Blume.png (50%), utilizzare il seguente comando:
convert -resize 50% Blume.png
Il comando seguente ridimensiona l'immagine in modo che si adatti a un rettangolo di 480x95 pixel, mantenendo il rapporto d'aspetto originale. Il risultato è quindi una larghezza massima di 480 pixel e un'altezza massima di 95 pixel.
convertire -ridimensionare 480x95 fiore.png
Per impostazione predefinita, ImageMagick mantiene il rapporto di aspetto dell'immagine per evitare distorsioni. Tuttavia, se si desidera forzare l'immagine all'esatta dimensione di destinazione, anche se ciò comporta distorsioni, aggiungere un punto esclamativo (!) direttamente dopo la specifica delle dimensioni.
convertire -ridimensionare 480x95! Fiore.png
È anche possibile scalare le immagini direttamente quando le si converte in un altro formato. Ecco un esempio della combinazione di conversione di formato (JPEG → PNG) e scalatura del 50%.
convertire Blume.jpg -ridimensionare del 50% Blume.png
Nota
Per quanto riguarda il ridimensionamento, si noti che si intende la risoluzione in pixel e non la dimensione di visualizzazione sullo schermo.
Se si riduce la risoluzione del 50%, un'immagine di 1000 x 1000 pixel diventa un'immagine di 500 x 500 pixel. Invece di un milione di pixel, si hanno solo 250.000 pixel, cioè un quarto dei pixel dell'immagine originale.
Se si confronta l'originale con la versione ridimensionata direttamente accanto sullo schermo, l'immagine ridimensionata occupa solo un quarto dell'area dell'immagine originale. In altre parole: in questo caso, l'immagine originale è quattro volte più grande di quella ridimensionata.
Attivare il supporto PDF
Si prega di notare
Il supporto PDF non è disponibile per i contratti ordinati dopo il 18 settembre 2025.
Per motivi di sicurezza, l'elaborazione dei file PDF è disattivata nella configurazione standard di ImageMagick. Tuttavia, è possibile attivare questa funzione in modo specifico per il proprio spazio web, creando un proprio file di configurazione:
Creare la seguente sottodirectory nella directory principale(/) del vostro spazio web. Potete farlo tramite un client FTP o direttamente tramite SSH con il comando mkdir -p ~/.config/ImageMagick.
mkdir -p ~/.config/ImageMagick
Creare un file con il nome policy.xml in questa nuova directory. È possibile utilizzare l'editor nano tramite SSH, ad esempio:
nano ~/.config/ImageMagick/policy.xml
Copiare completamente il seguente codice XML nel file policy.xml. Questo codice sovrascrive i criteri standard e consente l'accesso in lettura e scrittura per formati come PDF, PS ed EPS.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policymap [
<!ELEMENT policymap (policy)+>
<!ATTLIST policymap xmlns CDATA #FIXED ''>
<!ELEMENT policy EMPTY>
<!ATTLIST policy xmlns CDATA #FIXED '' domain NMTOKEN #REQUIRED
name NMTOKEN #IMPLIED pattern CDATA #IMPLIED rights NMTOKEN #IMPLIED
stealth NMTOKEN #IMPLIED value CDATA #IMPLIED>
]>
<policymap>
<policy domain="resource" name="memory" value="256MiB"/>
<policy domain="resource" name="map" value="512MiB"/>
<policy domain="resource" name="width" value="16KP"/>
<policy domain="resource" name="height" value="16KP"/>
<policy domain="resource" name="area" value="128MB"/>
<policy domain="resource" name="disk" value="1GiB"/>
<policy domain="resource" name="thread" value="2"/>
<policy domain="delegate" rights="none" pattern="URL" />
<politica dominio="delegato" diritti="nessuno" pattern="HTTPS" />
<politica dominio="delegato" diritti="nessuno" pattern="HTTP" />
<policy domain="path" rights="none" pattern="@*"/>
<policy domain="coder" rights="read | write" pattern="{PS,PS2,PS3,EPS,XPS,PDF,PNG}" />
<politica dominio="modulo" diritti="lettura | scrittura" modello="{PS,PS2,PS3,EPS,XPS,PDF,PNG}" />
</policymap>- salvare il file policy.xml. Se il file è stato creato localmente, caricarlo via SFTP nella cartella.config/ImageMagick.
Il supporto PDF per ImageMagick è ora attivo. Le modifiche avranno effetto immediato.
Utilizzo della conversione PDF negli script PHP
Se si desidera chiamare ImageMagick da uno script PHP per elaborare i PDF, è necessario un ulteriore passaggio. Gli script PHP non conoscono il percorso del file policy.xml per impostazione predefinita. È necessario renderlo noto tramite la variabile d'ambiente HOME.
È necessario il percorso assoluto della directory dello spazio web (radice del documento). Per sapere come determinarlo, consultare l'articolo Determinazione del percorso assoluto di uno spazio web (radice del documento).
Il seguente esempio di script PHP mostra come impostare la variabile d'ambiente e poi convertire un file PDF in un file JPG.
<?php
// Sostituire questo percorso con il percorso assoluto della cartella dello spazio web.
$home_path = "/homepages/12/d123456789/htdocs";
// Imposta la variabile d'ambiente HOME in modo che ImageMagick trovi la policy.xml.
putenv("HOME=" . $home_path);
// Definisce il percorso completo dei file e dello strumento di conversione.
$pdf_file = $home_path . "/documento.pdf";
$jpg_file = $home_path . "/preview.jpg";
$convert_path = "/usr/bin/convert";
// Assemblate il comando ed eseguitelo.
// L'aggiunta [0] assicura che venga convertita solo la prima pagina del PDF.
$command = $convert_path . " " . escapeshellarg($pdf_file . "[0]") . " . escapeshellarg($jpg_file);
$output = shell_exec($comando);
// Opzionale: visualizzare l'output o l'errore (per il debug)
if ($output) {
echo "Errore output: " . $output;
} else {
echo "Conversione avviata con successo.";
}
?
Attenzione
La funzione shell_exec() esegue comandi di shell direttamente sul server. Assicurarsi sempre che nessun input dell'utente non pulito (ad esempio, nomi di file da un modulo di caricamento) sia inserito direttamente nel comando, per evitare vulnerabilità di sicurezza come l'iniezione di comandi. Utilizzare funzioni come escapeshellarg() per proteggere i percorsi dei file.