Skip to content

Instantly share code, notes, and snippets.

@pigreco
Created July 30, 2024 17:49
Show Gist options
  • Save pigreco/e3c3aa5254783a6153d38d77586875b7 to your computer and use it in GitHub Desktop.
Save pigreco/e3c3aa5254783a6153d38d77586875b7 to your computer and use it in GitHub Desktop.
#!/bin/bash
# Definisci la proporzione del ritaglio (larghezza:altezza)
CROP_RATIO="2:1"
# Definisci le directory di input e output
INPUT_DIR="../rename_cropping"
OUTPUT_DIR="./cropping"
# Crea la directory di output se non esiste
mkdir -p "$OUTPUT_DIR"
echo "Inizio elaborazione. Directory di input: $INPUT_DIR, Directory di output: $OUTPUT_DIR"
# Funzione per calcolare il massimo comun divisore (MCD)
gcd() {
local a=$1
local b=$2
while [ $b -ne 0 ]; do
local t=$b
b=$((a % b))
a=$t
done
echo $a
}
# Estrai i valori del rapporto
RATIO_WIDTH=$(echo $CROP_RATIO | cut -d':' -f1)
RATIO_HEIGHT=$(echo $CROP_RATIO | cut -d':' -f2)
# Itera su tutti i file JPG nella directory di input
for file in "$INPUT_DIR"/*.jpg
do
if [ -f "$file" ]; then
filename=$(basename "$file")
output_file="$OUTPUT_DIR/$filename"
echo "Elaborazione del file: $file"
# Ottieni le dimensioni dell'immagine
dimensions=$(identify -format "%wx%h" "$file")
width=$(echo $dimensions | cut -d'x' -f1)
height=$(echo $dimensions | cut -d'x' -f2)
echo "Dimensioni originali: $width x $height"
# Calcola le dimensioni del crop
if [ $((width * RATIO_HEIGHT)) -lt $((height * RATIO_WIDTH)) ]; then
# L'immagine è più alta del rapporto desiderato
crop_width=$width
crop_height=$((width * RATIO_HEIGHT / RATIO_WIDTH))
else
# L'immagine è più larga del rapporto desiderato o nel rapporto esatto
crop_height=$height
crop_width=$((height * RATIO_WIDTH / RATIO_HEIGHT))
fi
# Calcola le coordinate per il ritaglio dal basso a sinistra
left=0
top=$((height - crop_height))
echo "Dimensioni del crop: $crop_width x $crop_height"
echo "Coordinate di ritaglio: ${left}x${top}+${crop_width}x${crop_height}"
# Esegui il ritaglio
convert "$file" -crop "${crop_width}x${crop_height}+${left}+${top}" "$output_file"
# Verifica se il file di output esiste e ha una dimensione maggiore di zero
if [ -s "$output_file" ]; then
echo "Immagine elaborata con successo: $output_file"
else
echo "ERRORE: Impossibile creare o l'immagine di output è vuota: $output_file"
fi
else
echo "AVVISO: File non trovato o non accessibile: $file"
fi
done
echo "Elaborazione completata. Le immagini ritagliate sono in $OUTPUT_DIR"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment