da palette ACT (adobe photoshop) a palette GPL (gimp 3.x)
Trovandomi nell'esigenza di utilizzare dei file ACT Adobe Colors Table ma non utilizzando più da tempo il meraviglioso Photoshop a vantaggio del tanto bravo GIMP mi sono reso contro che quest'ultimo non digerisce, appunto, il formato ACT, ho cercato un po' in rete con molti molti risultati e indicazioni differenti, all'uso trovato uno script pythom per la conversione on the fly da ACT a GPL (GPL sono i file di palette per GIPM) non nutrendo tutta questa simpatia per python, mi sono chiesto se fosse possibile far la stessa cosa con la bash di Linux, dopo un po' di ricerche e strafalcioni scritti, sono riuscito a create un semplicissimo script che converte i file ACT in formato GPL, più digeribile per GIMP.
Di seguito il codice che potete recuperare, migliorare e ricondividere:
1#!/bin/bash
2
3# Convertitore ACT to GPL per GIMP
4# Utilizzo: ./act_to_gpl.sh file.act
5
6if [ $# -ne 1 ]; then
7 echo "Usage: $0 <file.act>"
8 exit 1
9fi
10
11input_file="$1"
12output_file="${input_file%.*}.gpl"
13
14# Controlla se il file esiste
15if [ ! -f "$input_file" ]; then
16 echo "Errore: File $input_file non trovato!"
17 exit 1
18fi
19
20# Estrai la palette e converti
21{
22 echo "GIMP Palette"
23 echo "Name: $(basename "$output_file" .gpl)"
24 echo "Columns: 0"
25 echo "#"
26
27 # Analisi del file binario con od e awk
28 file_size=$(wc -c < "$input_file")
29
30 if [ "$file_size" -eq 772 ]; then # Formato CS2
31 # Estrai il numero di colori (big-endian a 2 byte)
32 num_colors=$(od -j 768 -N 2 -t u2 -An --endian=big "$input_file" | tr -d ' ')
33 # Leggi solo i primi 768 byte
34 data=$(od -v -t u1 -An -N 768 "$input_file")
35 else
36 num_colors=$((file_size / 3))
37 data=$(od -v -t u1 -An "$input_file")
38 fi
39
40 # Gestione casi speciali per il numero di colori
41 if [ "$num_colors" -eq 0 ] || [ "$num_colors" -gt 256 ]; then
42 num_colors=256
43 fi
44
45 # Converti i dati in formato GPL
46 echo "$data" | awk -v count="$num_colors" '
47 {
48 for(i=1; i<=NF; i++) {
49 printf "%d ", $i
50 if(++col % 3 == 0) printf "\tUntitled\n"
51 if(row >= count) exit
52 }
53 row = int(col/3)
54 }' | head -n "$num_colors"
55} > "$output_file"
56
57echo "File convertito: $output_file"
Salvatelo e rendetelo eseguibile con il comando:
1chmod +x act2gpl.sh
Potete utilizzarlo come di seguito:
1./act2gpl.sh /home/utente/palette/mia_palette.act
Vi ritroverete un file .GPL allo stesso percorso. Spero potrà tornarvi utile, per inciso ci sono già un sacco di programmi anche online che lo fanno e spesso vengono messi a disposizione già i file .GPL per il download, ma cosa c'è di meglio di perdere tempo a far cose "poco" utili.