#!/bin/bash

# Directory containing the images
input_dir="./public"
output_dir="./public/tmp"

rm -rf ${output_dir}
mkdir -p ${output_dir}

for input_file in "$input_dir"/*; do
    if [ -f "$input_file" ]; then
        filename=$(basename "$input_file")
        extension="${filename##*.}"
        output_file="${output_dir}/${filename}"

        case "$extension" in
            jpg)
                # local max=65536
                if [ $(stat -f%z "${input_file}") -gt 65536 ]; then
                    magick "${input_file}" -resize 30% "${output_file}"
                    while [ $(stat -f%z "$output_file") -gt 65536 ]; do
                        echo "Processing JPEG file: $output_file"
                        magick "${output_file}" -resize 30% "${output_file}"
                    done
                fi
                mv "${output_file}" "${input_file}"
                ;;
            gif)
                if [ $(stat -f%z "$input_file") -gt 1048576 ]; then
                    ffmpeg -y -i "$input_file" -vf "scale=iw*0.75:ih*0.75" "${output_file}"
                    while [ $(stat -f%z "$output_file") -gt 1048576 ]; do
                        echo "Processing GIF file: $output_file"
                        # Compress GIF files using ffmpeg
                        ffmpeg -y -i "$output_file" -vf "scale=iw*0.75:ih*0.75:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=32[p];[s1][p]paletteuse=dither=bayer" "${output_dir}/tmp-${filename}"
                        mv "${output_dir}/tmp-${filename}" "${output_file}"
                    done
                    mv "${output_file}" "${input_file}"
                fi
                ;;
            *)
                echo "Skipping file: $input_file"
                ;;
        esac
    fi
done

rm -rf ${output_dir}

echo "Compression complete!"
