Optimització i conversió d'imatges per lots amb ImageMagick

  • ImageMagick, mogrify i converti permet redimensionar, convertir i optimitzar grans volums d'imatges des de la terminal amb gran flexibilitat.
  • Eines addicionals com cwebp, jpegtran i img2webp milloren la compressió i el suport de formats moderns com a WebP per a ús web.
  • El processament per lots es pot automatitzar amb scripts de Shell o integrar-se en llenguatges com PHP, Python o Node.js.
  • Solucions gràfiques com Converseen faciliten l'ús d'ImageMagick per a conversions i famosos massius sense necessitat de manejar ordres.

Optimitzar imatges per lots amb ImageMagick

Si treballes amb imatges diàriament, tard o d'hora et tocarà enfrontar-te a aquell moment temut: canviar mida, format o optimitzar centenars o milers d'arxius de cop . Fer-ho a mà amb un editor gràfic és una bogeria, a més a més d'una pèrdua de temps brutal. La bona notícia és que amb ImageMagick i unes quantes eines afins pots automatitzar gairebé tot el procés des de la terminal.

En aquest article veurem com aprofitar ImageMagick per a l'optimització i la conversió d'imatges per lots, combinant-ho quan cal amb altres utilitats com mogrify, cwebp o jpegtran. Veuràs exemples pràctics a Linux (bash), però moltes ordres són perfectament adaptables a Windows i macOS.

Per què necessitem optimitzar i convertir imatges per lots?

Modificar una foto solta és molt senzill: qualsevol visor o editor gràfic permet redimensionar i canviar de format amb dos clics. El problema comença quan ja no són ni una ni dues fotos, sinó desenes de milers repartides per carpetes o biblioteques enormes.

Pensa en casos com un lloc de models amb més de 300.000 imatges JPEG i PNG , moltes dentre 1 i 15 MB. Si gran part de la vostra audiència es connecta amb connexions modestes (per exemple, usuaris a Alemanya amb ADSL fluix), carregar aquestes imatges en una web es converteix en un suplici per a l'usuari i per al servidor.

També és molt habitual necessitar reduir de cop la mida de les fotos per enviar per correu, compartir per Dropbox/Google Drive o preparar material per a presentacions. Fer-ho a mà és tediós i ineficient; el que és sensat és automatitzar la tasca amb scripts i eines en mode consola.

PDF maliciós
Article relacionat:
Com detectar un PDF maliciós a Windows

Opcions generals per a projectes amb moltes imatges

Abans d'entrar a fons amb ImageMagick, convé tenir clar que hi ha diverses estratègies per manejar biblioteques massives de mitjans , com les d'un lloc web molt gran:

  • Plugins o eines de conversió massiva dins del CMS (per exemple, plugins de WordPress que converteixen WebP). Poden funcionar bé a biblioteques mitjanes, però amb centenars de milers d'imatges és freqüent que es quedin curts, donin timeout o saturin el servidor.
  • Optimització a la capa de CDN (per exemple, un pla de pagament de Cloudflare amb optimització/Polish). En aquest cas, el CDN serveix versions optimitzades (o WebP) sense que hagis de reconvertir tots els fitxers originals. És una opció còmoda i escalable, encara que depens del proveïdor i no reduïxes pes en disc del servidor origen.
  • Processament per lots a nivell de sistema utilitzant ImageMagick, cwebp i altres eines CLI. Requereix una mica més de treball inicial (scripts, proves, còpies de seguretat), però et dóna un control total sobre formats, qualitats, rutes i fluxos de treball. És ideal quan vols netejar una llibreria antiga o preparar recursos de forma molt específica.

En molts projectes grans la millor jugada és combinar totes dues coses: optimitzar i convertir per lots l'històric amb ImageMagick i, alhora, recolzar-te a la CDN per polir i servir la versió més lleugera possible segons el navegador.

Instal·lació bàsica d'ImageMagick i eines relacionades

El primer, òbviament, és tenir instal·lat ImageMagick i les utilitats addicionals que vulguis fer servir. En la majoria de distribucions Linux només cal tirar de gestor de paquets:

  • Debian/Ubuntu (i derivades):
    sudo apt-get install imagemagick
    o bé
    sudo aptitude install imagemagick
  • openSUSE, Fedora, etc.: instal·la el paquet imagemagick des dels repositoris oficials o mitjançant les eines gràfiques del teu distro.

A Windows i macOS pots descarregar l'instal·lador directament des de la web oficial d'ImageMagick, que proporciona binaris llestos per utilitzar. Quan instal·leu, assegureu-vos de marcar l'opció d'afegir els binaris al PATH del sistema per poder usar magick, convert o mogrify directament des de la terminal.

Si els paquets oficials us donen problemes (per exemple, bugs en convertir des de XCF a Debian/Ubuntu), hi ha scripts com “ImageMagick Easy Install (IMEI)” que descarreguen, compilen i instal·len una versió més recent des de fonts de forma automatitzada.

Alguns entorns de desenvolupament locals tot-en-un, com ServBay , ja inclouen ImageMagick, cwebp, jpegtran, djpeg, cjpeg i img2webp preinstal·lats i afegits al PATH, cosa que et permet utilitzar aquestes eines sense configuració addicional des de la terminal integrada.

Ordres clau d'ImageMagick per a ús bàsic

ImageMagick no és un únic programa, sinó una col·lecció d'utilitats de línia d'ordres centrades en la manipulació d'imatges. Les més típiques a l'hora d'optimitzar i convertir són:

  • magick / converti: per transformar imatges (canviar mida, format, aplicar filtres, compondre, etc.). En versions modernes l'ordre “principal” és magick; convert sol existir com a enllaç simbòlic per a compatibilitat.
  • mogificar: similar a convert, però pensat específicament per processar per lots i sobreescriure els fitxers originals llevat que li indiquis el contrari.
  • identificar: mostra informació d'una imatge (format, dimensions, profunditat de color, etc.).

Per obtenir dades ràpides d'una imatge concreta, per exemple un logotip a XCF, podeu utilitzar:

magick identify logo.xcf

Si vols un informe molt més detallat, afegeix -verbose i tindràs desgranades totes les metadades importants. És útil per assegurar - vos que el procés de conversió manté o canvia el que voleu.

Canviar format i mida d'imatges individuals

Convertir imatges per lots amb ImageMagick

La tasca més bàsica és convertir d'un format a un altre . Per exemple, de JPEG a PNG:

magick convert fotoorigen.jpg fotoresultado.png

ImageMagick decideix el format de sortida per la extensió del fitxer final, de manera que si canvies .jpg per .png, .webp o el que vulguis, es genera directament en aquest format.

magick convert fotoorigen.jpg -resize 800x600 -quality 90 fotoresultado.jpg

En aquest exemple s'ajusta la imatge a 800×600 píxels i s'estableix la qualitat JPEG al 90% . És una forma ràpida de reduir pes sense pèrdua apreciable a la gran majoria de casos web.

També pots fer servir només ample o només alt (Per exemple, -resize 1200x o -resize x800) perquè ImageMagick ajusti automàticament l'altra dimensió respectant les proporcions. Si uses el signe ! (Per exemple, -resize 800x600!) forces exactament aquestes dimensions, encara que la imatge es deformi si la relació daspecte no coincideix.

En cas de treballar amb arxius XCF de GIMP amb diverses capes, si converteixes directament PNG o JPG es generarà un fitxer per capa. Per evitar-ho i obtenir una sola imatge “aplanada”, afegeix l'opció -flatten abans del fitxer de sortida.

mogrify vs convert: quan fer servir cadascun

Una diferència molt important en treballar per lots és entendre què fa exactament cada ordre :

  • convert (o magick convert) llegeix una imatge d'entrada, aplica les transformacions i genera un nou arxiu de sortida. La imatge original roman intacta.
  • mogificar obre el fitxer, aplica els canvis i, llevat que facis servir -format o -path, sobreescriu el fitxer original. Això estalvia espai al disc, però els canvis són irreversibles si no tens còpia de seguretat.

Les trucades típiques serien:

convert imagenoriginal.png -parametro valor imagendestino.png
mogrify -parametro valor imagenoriginal.png

Per exemple , si executes:

convert torres.jpg -negate torresnegadas.jpg

seguiràs tenint dos fitxers diferents , l'original i el negatiu. En canvi, si fas:

mogrify -negate torres.jpg

l'arxiu torres.jpg queda modificat i no hi ha còpia de seguretat tret que tu l'hagis creada prèviament. Ideal per netejar moltes imatges quan et preocupa l'espai, però cal anar amb compte.

En ambdós casos el ordre dels arguments importa. Amb convert primer poses la imatge origen, després els paràmetres i al final la destinació. Si inverteixes origen i destinació, l'eina fallarà directament perquè no troba el fitxer que hauria de llegir. Amb mogrify els paràmetres van abans dels noms del fitxer; si primer poseu el fitxer i després les opcions, no s'aplicarà res.

Creació de llenços i textos des de zero

Una altra diferència clau és que només convertit pot crear imatges des de zero. Amb el modificador xc: pots generar un llenç de color sòlid:

convert -size 500x250 xc:red imagenroja.jpg

Si intentes fer alguna cosa similar amb mogrify sense un fitxer previ, fallarà perquè no té res a modificar. El mateix passa amb la generació de cartelles o imatges amb text directament:

convert -size 500x250 -gravity Center -background blue -font FreeMono-Bold label:"Linux Center" cartela_Linux_Center.jpg

Aquesta ordre crea un fons blau, centra el text, aplica una font i genera una imatge nova. Amb mogrify necessitaries partir d'un fitxer ja existent; no es pot inventar un del no-res.

Processament per lots amb mogrify i scripts de Shell

Quan tenim centenars de fotos en una carpeta i volem aplicar-los la mateixa conversió de forma automàtica, entren en joc els scripts de Shell i mogrify.

#!/bin/bash
mkdir -p convertidas
for img in *.jpeg; do
convert "$img" -resize 800x600 -quality 90 "convertidas/$img"
done

Aquest miniscript recorre totes les imatges amb extensió .jpeg a la carpeta actual, aplica el redimensionat i deixa els resultats a convertides/. Pots adaptar-lo per canviar de format (per exemple, que la sortida sigui .png o .webp), afegir marques d'aigua o qualsevol altre filtre que admeti ImageMagick.

Quan tens moltes imatges amb el mateix format i vols sobreescriure-les al lloc estalviant espai, mogrify brilla especialment. Un exemple típic per convertir XCF a PNG redimensionant i enviant el resultat a una altra carpeta seria:

mogrify -resize 128x128 -format png -path "$HOME/imgs_convertidas" $HOME/imgs_originales/*.xcf

mogrify per a conversió massiva i paràmetres habituals

L'ordre mogrify permet encadenar moltes transformacions de cop. Un exemple força complet per convertir tots els PDF d'una carpeta a JPG, reescalar-los, ajustar qualitat i rotar-los seria:

mogrify -format jpg -density 300 -quality 80 -resize 1280x1024 -rotate -90 *.pdf

Alguns dels paràmetres més utilitzats en contextos d'optimització i conversió són:

  • -format: format de la imatge de sortida (jpg, png, webp, etc.).
  • -densitat: resolució en dpi (150, 300, 600…), útil en convertir PDF o altres formats vectorials a bitmap.
  • -La qualitat: qualitat de compressió per a formats amb pèrdua (sobretot JPEG i WebP). 80 sol ser un bon equilibri per a web.
  • -resize: dimensions finals, podent indicar només ample, només alt o ambdós.
  • -girar: rotació en graus (positius en sentit horari, negatius en sentit antihorari).

Tingues en compte que en algunes distribucions (com Ubuntu/Debian amb ImageMagick 7) s'han establert polítiques de seguretat que deshabiliten per defecte certs formats sensibles, com PDF. Si en fer servir mogrify sobre PDFs t'apareix un error de permisos, pots editar l'arxiu /etc/ImageMagick-7/policy.xml amb privilegis d'administrador i canviar la línia:

Si en fer servir mogrify sobre PDFs t'apareix un error de permisos, pots editar el fitxer /etc/ImageMagick-7/policy.xml amb privilegis d'administrador i canviar la línia:

<policy domain="coder" rights="none" pattern="PDF" />

per alguna cosa com:

<policy domain="coder" rights="read | write" pattern="PDF" />

relaxació de seguretat que has de valorar si et compensa o no; des del punt de vista purista obre una petita escletxa, però en molts entorns controlats és assumible.

Conversió i optimització cap a formats moderns (WebP, JPEG optimitzat)

A més de ImageMagick, hi ha eines específiques molt útils per optimitzar mida sense perdre massa qualitat , especialment quan el teu objectiu és la web.

Conversió a WebP amb cwebp i img2webp

WebP és un format modern creat per Google que ofereix compressió superior a JPEG i PNG en molts casos, tant amb pèrdua com sense pèrdua. La utilitat cwebp serveix per convertir imatges existents (JPEG, PNG…) a WebP des de la línia d'ordres:

  • Convertir un JPEG a WebP amb qualitat 80:
    cwebp -q 80 input.jpg -o output.webp
  • Convertir un PNG a WebP mantenint transparència:
    cwebp -q 80 input.png -o output.webp

Per processar per lots (per exemple, totes les imatges que comencin per servbay ), podeu utilitzar un petit bucle a Shell:

for file in servbay*.{jpg,png}; do
cwebp -q 45 "$file" -o "${file%.*}.webp"
done

la sintaxi ${file%.*} és una expansió de paràmetres de Shell que elimina l'extensió original, per després afegir .webp.

Si el que vols és crear un WebP animat (una cosa similar a un GIF animat, però més eficient), pots estirar img2webp:

img2webp -loop 0 -d 100 frame1.png frame2.png frame3.png -o output.webp

En aquest exemple es combinen diverses imatges en un sol fitxer animat, amb un retard de 100 ms entre fotogrames i bucle infinit.

Optimització sense pèrdua de JPEG amb jpegtran, djpeg i cjpeg

Per JPEG hi ha una sèrie d'utilitats clàssiques molt útils quan vols fer optimització sense pèrdua o amb control molt fi :

  • jpegtran: trencada, volteja, reordena i optimitza JPEG sense recomprimir (operacions sense pèrdua). També permet generar JPEG progressius i netejar metadades inservibles.
  • djpeg: descodifica JPEG a formats intermedis sense comprimir (com PPM), útil en fluxos de treball de baix nivell.
  • cjpeg: fa el procés contrari, comprimint imatges en brut a JPEG amb diferents paràmetres de qualitat.
Què són les imatges AVIF
Article relacionat:
AVIF: Tot sobre el nou format d'imatge que està revolucionant la web

Un ús típic de jpegtran per optimitzar JPEGs sense pèrdua i fer-los progressius seria:

jpegtran -optimize -progressive -copy none input.jpg > output.jpg

Aquí traiem metadades (EXIF, comentaris, etc.), millorem l'organització interna i convertim a progressiu, cosa que sol donar millor percepció de càrrega a la web en mostrar-se la imatge en “capes” de detall.

Tractament d'imatges per lots amb interfície gràfica: Converseen

Si la terminal no és la teva, però vols continuar aprofitant la potència d'ImageMagick, hi ha eines com Converseen , que ofereix una interfície gràfica multiplaforma (Windows i Linux) per gestionar conversions massives.

Converseen es basa internament en la biblioteca d'ImageMagick, i permet un cop de ploma :

  • Convertir entre formats (JPG, PNG, TIF, i molts altres com DPX, EXR, GIF, SVG, PhotoCD, PostScript…).
  • Redimensionar, rotar i voltejar imatges per lots.
  • Comprimir imatges per a web o per a documents, controlant qualitat i mida.
  • Reanomenar grups de fitxers amb prefixos, sufixos o números progressius.
  • Convertir un PDF complet en moltes imatges, una per pàgina.

S'instal·la fàcilment des dels repositoris de moltes distros (converseen, i en openSUSE converseen-lang per a l'idioma) o descarregant l'executable/versió portable a Windows.

La interfície de Converseen s'organitza en diversos panells: panell d'accions (vista prèvia, dimensions, rotació i opcions de sortida), una àrea central on veus els fitxers a tractar, i un panell inferior on tries el format de sortida, preferències específiques (compressió JPG/PNG, color per a fons transparent, etc.).

Entre les seves funcions més pràctiques hi ha les d' escala i anomenat massiu . Pots, per exemple, marcar “Escalar imatge”, mantenir la relació d'aspecte, establir amplada o percentatge de reducció, i triar si vols conservar el format original o convertir-ne un altre. Per reanomenar tens modes de Prefix/Suffix (inserir cadenes al voltant del nom original) i Progressive Number (afegir numeració seqüencial).

També permet rotar imatges 90°, 180° o invertir-les horitzontalment/verticalment, i té un flux específic per passar un PDF a un conjunt d'imatges: importes el PDF, selecciones les pàgines que t'interessen, tries dimensions, format, anomenat progressiu i, si cal, reemplaces fons transparents per un color concret (per exemple, blanc).

Casos pràctics típics amb ImageMagick

Amb tot això, ja pots muntar fluxos de treball molt variats. Alguns exemples habituals d' optimització i de conversió per lots amb ImageMagick serien:

  • Redimensionat massiu per a un bloc o galeria: utilitzar un script bash que recorri totes les fotos grans, les redueixi a una amplada màxima (per exemple, 1200px) i les deseu en una carpeta de “web”.
  • Descarregar imatges d'una URL, escalar i optimitzar en una sola comanda:
    convert https://blogandweb.com/INPUT_IMAGE.jpg -resize 1200x -quality 60 -strip OUTPUT_IMAGE.jpg
  • Afegir logos o marques d'aigua automàticament a totes les imatges d'una campanya usant combinacions de -gravity, -geometry y -composite dins un bucle.
  • Eliminar vores d'un conjunt d'imatges amb -shave 10x10, ideal per a fotos escanejades amb marcs indesitjats.
  • Unir diverses imatges en un muntatge horitzontal amb +append, útil per a comparatives abans/després o tires de fotogrames.
  • Generar GIFs animats a partir d'una seqüència de JPG/PNG amb -delay y -loop.

Tot aquest potencial es pot orquestrar des d'altres llenguatges com PHP, Python o Node.js trucant a les ordres mitjançant exec(), subprocess o child_process, el que fa que integrar loptimització dimatges en un flux de pujada o processament backend sigui força directe.

Com recuperar fotos desaparegudes de la Galeria del mòbil
Article relacionat:
Com Recuperar Fotos Desaparegudes de la Galeria del Mòbil: Guia Completa

Dominar ImageMagick, mogrify i les eines complementàries com cwebp o jpegtran us permet afrontar sense por biblioteques enormes d'imatges, reduir temps de càrrega a la web, estalviar espai en disc i automatitzar tasques que a mà serien inabastables. Un cop t'acostumes a escriure tres o quatre ordres ben pensades o un petit script, canviar mida, format i qualitat de milers de fotos deixa de ser un suplici i es converteix en part natural del teu flux de treball. Comparteix aquesta informació i més usuaris coneixeran l'eina.


Afegir com a font preferida a Google