#!/bin/zsh
# Funzione per convertire le immagini .HEIC in .jpg
convert_heic_to_jpg() {
# Check if input directory exists
if [ ! -d "$input_dir" ]; then
echo "Input directory $input_dir does not exist."
return 1
fi
# Check if output directory exists, if not, create it
if [ ! -d "$output_dir" ]; then
mkdir -p "$output_dir"
if [ $? -ne 0 ]; then
echo "Failed to create output directory $output_dir."
return 1
fi
fi
# Check if there are any .HEIC files in the input directory
shopt -s nullglob
heic_files=("$input_dir"/*.HEIC)
shopt -u nullglob
if [ ${#heic_files[@]} -eq 0 ]; then
echo "No .HEIC files found in $input_dir."
return 1
fi
# Convert each .HEIC file to .jpg
for file in "${heic_files[@]}"; do
base_name=$(basename "$file" .HEIC)
convert "$file" -quality 85 "$output_dir/$base_name.jpg"
if [ $? -eq 0 ]; then
echo "Converted $file to $output_dir/$base_name.jpg"
else
echo "Failed to convert $file."
fi
done
}
# Funzione per ridurre la dimensione dei file a meno di 2 megabyte
reduce_image_size() {
# Check if output directory exists
if [ ! -d "$output_dir" ]; then
echo "Output directory $output_dir does not exist."
return 1
fi
# Check if there are any .jpg files in the output directory
shopt -s nullglob
jpg_files=("$output_dir"/*.jpg)
shopt -u nullglob
if [ ${#jpg_files[@]} -eq 0 ]; then
echo "No .jpg files found in $output_dir."
return 1
fi
# Reduce each .jpg file to less than 2 megabytes
for file in "${jpg_files[@]}"; do
while [ $(stat -f%z "$file") -ge 1000000 ]; do
mogrify -resize 90% "$file"
done
echo "Reduced size of $file"
done
}
Shell script to change pics
Needed to change size and format
# ----4 esempio
# Directory contenente le immagini .HEIC
input_dir="/Users/luisamimmi/Github/_nerd_help/images"
# Directory dove salvare le immagini convertite
output_dir="/Users/luisamimmi/Github/_nerd_help/images/output"
# Call the 1 function
convert_heic_to_jpg
# Call the 2 function
reduce_image_size
#!/bin/zsh
# move to desired dir
cd huge_res
# Funzione per ridurre la dimensione delle immagini sotto 1MB in meno passaggi
reduce_image_size() {
# Creare una directory di output nella directory di lavoro corrente
mkdir -p "./output"
max_size=5000000
# Loop su ogni immagine .jpg nella directory corrente
for file in ./*.jpg; do
# Estrae il nome base del file
base_name=$(basename "$file")
# Copia l'immagine nella directory di output
cp "$file" "./output/$base_name"
# Inizializza la qualità a 85
quality=85
# Riduzione della qualità e, se necessario, riduzione della risoluzione in un unico ciclo
while [[ $(stat -f%z "./output/$base_name") -ge $max_size ]]; do
if [[ $quality -gt 10 ]]; then
# Riduci la qualità
magick "./output/$base_name" -quality $quality "./output/$base_name"
quality=$((quality - 5))
else
# Se la qualità è già bassa, riduci la risoluzione del 90%
magick "./output/$base_name" -resize 90% "./output/$base_name"
fi
done
# Mostra la dimensione finale dell'immagine
echo "Reduced $base_name to $(stat -f%z "./output/$base_name") bytes"
done
}
# Esecuzione della funzione
reduce_image_size