this post was submitted on 05 Apr 2024
26 points (84.2% liked)

General Discussion

11946 readers
1 users here now

Welcome to Lemmy.World General!

This is a community for general discussion where you can get your bearings in the fediverse. Discuss topics & ask questions that don't seem to fit in any other community, or don't have an active community yet.


🪆 About Lemmy World


🧭 Finding CommunitiesFeel free to ask here or over in: [email protected]!

Also keep an eye on:

For more involved tools to find communities to join: check out Lemmyverse and Feddit Lemmy Community Browser!


💬 Additional Discussion Focused Communities:


Rules

Remember, Lemmy World rules also apply here.0. See: Rules for Users.

  1. No bigotry: including racism, sexism, homophobia, transphobia, or xenophobia.
  2. Be respectful. Everyone should feel welcome here.
  3. Be thoughtful and helpful: even with ‘silly’ questions. The world won’t be made better by dismissive comments to others on Lemmy.
  4. Link posts should include some context/opinion in the body text when the title is unaltered, or be titled to encourage discussion.
  5. Posts concerning other instances' activity/decisions are better suited to [email protected] or [email protected] communities.
  6. No Ads/Spamming.
  7. No NSFW content.

founded 1 year ago
MODERATORS
 

I’ve updated @[email protected] to remember the whole tree of comments when replying to you, so it can do follow-up responses. You still have to mention it on every message, though. Example in the comments.

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 1 points 7 months ago

Here's a complete bash script that accomplishes the tasks you've outlined:

#!/bin/bash

# Prompt user for directory path
echo "Enter directory path:"
read dir_path

# Prompt user for number of columns
echo "Enter number of columns:"
read cols

# Prompt user for number of rows
echo "Enter number of rows:"
read rows

# Calculate total number of images and total width
total_images=$(ls -1 "$dir_path"/* | wc -l)
total_width=$((cols * 230)) # 200px for each image plus 30px gap

# Check if total width is greater than 300px, if so, increase rows
if (( $(($total_width / 300)) < $rows )); then
    rows=$(($total_images / $cols))
    if (( $(($total_images % $cols)) != 0 )); then
        rows=$(($rows + 1))
    fi
fi

# Calculate total height
total_height=$((rows * 300))

# Prompt user for output file path
echo "Enter output file path:"
read output_file

# Create contact sheet using Montage
montage -geometry +0+0 -label "%t" -pointsize 20 -background white \
        $(ls -1 "$dir_path"/* | sed '1d' | awk "NR==$total_images{print}") \
        -tile "$colsx$rows" -geometry 200x300\> \
        "$output_file"

echo "Contact sheet created successfully!"

Save the script as a file (e.g., contact_sheet.sh), make it executable (chmod +x contact_sheet.sh), and run it (./contact_sheet.sh). It will prompt you for the necessary inputs and create the contact sheet file in the specified output path.