... da qualsiasi formato a PNG
Non possiamo girarci troppo attorno, Linux o meglio GNU-Linux ed in generale il software libero, offrono a volte soluzioni incredibili, piccoli tesori, più o meno nascosti per chi ha voglia di cercarli. E' il caso di due pacchetti che possiamo trovare a corredo nelle più famose distribuzioni, ovvero: convert e imagemagick due 'piccoli' strumenti che possono aiutarci nel compito spesso non semplice di conversione di un file immagine da un formato all'altro.
Spesso ho l'esigenza di convertire immagini in formati differenti in PNG, utilizzo prevalentemente il formato PNG per le immagini da pubblicare sul web, da Instagram sino a queste pagine, all'uso mi sono inventato uno script per la bash di Linux che in modo semplice ci permette di convertire qualsiasi formato di immagine in PNG.
Di seguito il listato, da vero retromaniaco, adoro la parola listato, eccolo:
1#!/bin/bash
2
3# Verifica se sono stati passati tutti i parametri necessari
4if [ $# -ne 3 ]; then
5 echo "Utilizzo: $0 <formato_sorgente> <percorso_sorgente> <percorso_destinazione>"
6 exit 1
7fi
8
9source_format="$1"
10source_dir="$2"
11destination="$3"
12
13# Verifica che ImageMagick sia installato
14if ! command -v convert &>/dev/null; then
15 echo "ImageMagick non è installato o il comando 'convert' non è disponibile. Installalo per continuare."
16 exit 1
17fi
18
19# Controlla se la directory sorgente esiste
20if [ ! -d "$source_dir" ]; then
21 echo "La directory sorgente $source_dir non esiste. Verifica il percorso e riprova."
22 exit 1
23fi
24
25# Controlla se la directory destinazione esiste
26if [ ! -d "$destination" ]; then
27 mkdir -p "$destination"
28fi
29
30# Abilita case-insensitive globbing
31shopt -s nocaseglob
32
33# Itera su tutti i file del formato sorgente nella directory sorgente
34for file in "$source_dir"/*.$source_format; do
35 if [ -f "$file" ]; then
36 # Rimuove il percorso e il suffisso dal nome del file
37 base_name=$(basename "$file" .$source_format)
38 output_file="$destination/${base_name}.png"
39
40 # Gestisce la numerazione progressiva in caso di conflitti di nome
41 count=1
42 while [ -f "$output_file" ]; do
43 output_file="$destination/${base_name}_$count.png"
44 count=$((count + 1))
45 done
46
47 # Effettua la conversione
48 convert "$file" "$output_file"
49 if [ $? -eq 0 ]; then
50 echo "Convertito con successo: $file -> $output_file"
51 else
52 echo "Errore durante la conversione di: $file"
53 fi
54 fi
55done
56
57# Disabilita case-insensitive globbing
58shopt -u nocaseglob
59
60echo "Conversione completata!"
create il file salvatelo in una cartella a voi congeniale, una volta salvato dovremo renderlo eseguibile:
1chmod +x nomedelfile.sh
Utilizzarlo è molto semplce:
1./anyimagconv.sh <formato file da vonvertire> /percorso/file/sorgente /percorso/file/destinazione
questo script può convertire anche una sola immagine, ma è l'ideale per convertire tutti i file .BMP ad esempio contenuti in un a specifica cartella nei corrispettivi file .PNG ImageMagick è uno strumento davvero incredibile, supporta un centinaio di forati di immagine differenti, dovreste riuscire a convertire praticamente tutto.