Automatic Picture Sizing and Renaming
Cameron Simpson
cs at zip.com.au
Tue Dec 12 04:07:38 UTC 2006
On 11Dec2006 22:55, Thom Paine <painethom at gmail.com> wrote:
| I have several hundred pictures I'd like to resize to 800x600 and I'd
| also like to randomize their names to have them shuffle on a computer
| screen for a screensaver.
|
| I've been reading a bit and have some of a command figured out.
|
| #convert -interlace NONE -geometry 800x600
| /home/workgroup/pics/image1.jpg
| /home/workgroup/pics/image1.resized.jpg
Ouch. I hope you're not doing this as root!
Do it all as a normal user whenever possible.
| I'm not sure how to get this to work on a whole directory full of pictures.
| Should I run this in some sort of a while do loop? I'm a rookie with
| bash, but have been reading a bit trying to understand it.
"sh", not "bash".
| Since I want them all to be random, is it better to rename them all
| first with a random number between 1000 and 1999 with pic in front or
| should I resize them first, delete the bigger original (because it
| will be a copy) and then rename them? And what happens if I happen to
| already have a picture named that?
I'd:
- convert to the right size. Probably keep them all in a special
directory.
- make a random collection of symlinks to the converted files,
in yet another directory.
This way you can incrementally add more pictures and only do the
conversion for the new images, _and_ you can reshuffle just by remaking
the random symlinks.
| 1. Take all images in a source directory and convert them to 800x600
| resolution.
| 2. Rename all images in said source directory to a random number
| between 1000 and 1999 and then have the image name come out something
| like pic1717.jpg
| 3. Delete the images in the source directory making room for another
| batch to convert and display.
Short on disc space? Ok then.
Something like this:
cd the-directory-of-original-images
# make resized images as needed
[ -d RESIZED ] || mkdir RESIZED
for img in *.jpg
do
resized=RESIZED/$img
# skip images already resized
[ -s "$resized" ] && continue
convert -interlace NONE -geometry 800x600 "$img" "$resized"
done
# create directory of links
rm -rf RANDOM
mkdir RANDOM
cd RESIZED
ls \
| shuffle \
| \
{ n=0
while read img
do
n=`expr $n + 1`
ln "$img" ../RANDOM/$n.jpg
done
At this point there should be random resize images in the directory
"the-directory-of-original-images/RANDOM".
That's untested. You will need the "shuffle" script, fetchable here:
http://www.cskk.ezoshosting.com/cs/css/bin/shuffle
You can remove the original images if you like. Just make sure any new
images have unqiue names, never seen before.
Cheers,
--
Cameron Simpson <cs at zip.com.au> DoD#743
http://www.cskk.ezoshosting.com/cs/
Senior ego adepto, ocius ego eram.
More information about the fedora-list
mailing list