62 lines
1.7 KiB
Bash
Executable File
62 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
# Set size for item icons (example: 256x256 or 128x128)
|
|
ITEM_SIZE="256x256"
|
|
|
|
echo "Starting conversion..."
|
|
|
|
find . -type d -name "original" | while read -r orig_dir; do
|
|
echo "📂 Folder: $orig_dir"
|
|
|
|
out_dir="$(dirname "$orig_dir")"
|
|
|
|
# Check if this is the items/original folder
|
|
is_items_folder=false
|
|
if [[ "$orig_dir" == *"/items/original" ]]; then
|
|
is_items_folder=true
|
|
echo " 🔧 Applying item-specific processing (remove white background, resize)"
|
|
fi
|
|
|
|
# Process images in original folder
|
|
find "$orig_dir" -maxdepth 1 -type f \( -iname "*.png" -o -iname "*.jpg" -o -iname "*.jpeg" \) | \
|
|
while read -r img; do
|
|
|
|
filename="$(basename "$img")"
|
|
base="${filename%.*}"
|
|
out_file="$out_dir/$base.webp"
|
|
|
|
if [[ -f "$out_file" ]]; then
|
|
echo " ✔ Skipping existing: $out_file"
|
|
continue
|
|
fi
|
|
|
|
# If this is an item icon, preprocess it
|
|
if [[ "$is_items_folder" = true ]]; then
|
|
echo " ➜ Processing item: $filename"
|
|
|
|
tmp_png="/tmp/${base}_clean.png"
|
|
|
|
# 1. Remove white background using ImageMagick
|
|
convert "$img" -fuzz 10% -transparent white "$tmp_png"
|
|
|
|
# 2. Resize to smaller square
|
|
convert "$tmp_png" -resize "$ITEM_SIZE" "$tmp_png"
|
|
|
|
# 3. Convert to WebP
|
|
cwebp "$tmp_png" -q 85 -o "$out_file" >/dev/null
|
|
|
|
rm "$tmp_png"
|
|
|
|
else
|
|
# Standard conversion for other folders
|
|
echo " ➜ Converting: $filename → $out_file"
|
|
cwebp "$img" -q 85 -o "$out_file" >/dev/null
|
|
fi
|
|
|
|
done
|
|
done
|
|
|
|
echo "✨ Done! Missing files created, with special processing for items."
|