1760814789.jpg
1760813686.jpg
1760813230.jpg
#!/bin/bash
# Create a colorful random moodboard with reduced overlap (ImageMagick v7)
# Output files are timestamped and stored in ./moodboards/
SRC_DIR="/home/pi/imagefolder"
OUT_DIR="/home/pi/moodboards"
mkdir -p "$OUT_DIR"
WIDTH=1280
HEIGHT=720
MAX_IMAGES=8
# Timestamped output filename
TIMESTAMP=$(date +%s)
OUT_FILE="${OUT_DIR}/moodboard_${TIMESTAMP}.jpg"
TMP_DIR=$(mktemp -d)
# Pick random JPEG images
mapfile -t FILES < <(find "$SRC_DIR" -type f \( -iname "*.jpg" -o -iname "*.jpeg" \) | shuf -n $MAX_IMAGES)
# Create RGB white canvas
magick -size ${WIDTH}x${HEIGHT} canvas:white -colorspace sRGB "$TMP_DIR/base.png"
# Determine layout grid positions (2x4 grid for up to 8 images)
COLS=4
ROWS=2
CELL_W=$((WIDTH / COLS))
CELL_H=$((HEIGHT / ROWS))
i=0
for f in "${FILES[@]}"; do
((i++))
# Resize proportionally to fit in a cell
magick "$f" -colorspace sRGB -resize "${CELL_W}x${CELL_H}>" "$TMP_DIR/img_${i}.png"
# Random small rotation (-10 to +10)
ANGLE=$((RANDOM % 21 - 10))
magick "$TMP_DIR/img_${i}.png" -background none -rotate "$ANGLE" "$TMP_DIR/rot_${i}.png"
# Grid position with a *wider* random offset (±80 px for more overlap)
row=$(( (i-1) / COLS ))
col=$(( (i-1) % COLS ))
XPOS=$(( col * CELL_W + RANDOM % 161 - 80 ))
YPOS=$(( row * CELL_H + RANDOM % 161 - 80 ))
# Composite with minimal overlap
magick "$TMP_DIR/base.png" "$TMP_DIR/rot_${i}.png" \
-colorspace sRGB -geometry +${XPOS}+${YPOS} -compose over -composite "$TMP_DIR/base.png"
done
# Save final moodboard
magick "$TMP_DIR/base.png" -colorspace sRGB "$OUT_FILE"
rm -rf "$TMP_DIR"
echo "✅ Moodboard created: $OUT_FILE"










