BASH script: resize pictures in rar archive

It's tested on CentOS 7.

Before use it, you must install zip and ImageMagick:
yum install zip ImageMagick
and unrar:
# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
# rpm -Uvh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
# yum update
# yum install unrar

Create a exectable file (it names "rarresizer.sh" here.) with Code below:
#!/bin/bash
mkdir ./tmp
mkdir ./produced
IFS=$'\n'
for UNRARFILE in $( ls *.rar ); do
 echo item: $UNRARFILE
 UNRARCACHE="${UNRARFILE%.rar}"
 mkdir ./tmp/$UNRARCACHE
 unrar x $UNRARFILE tmp/$UNRARCACHE
 find ./tmp/$UNRARCACHE -name *.jpg -print -exec mogrify -resize x1308\> {} \;
 find ./tmp/$UNRARCACHE -name *.png -print -exec mogrify -resize x1308\> {} \;
 find . -name *.txt -exec rm -f {} \;
 find . -name *.url -exec rm -f {} \;
 cd ./tmp
 zip -0 -r ../produced/$UNRARCACHE.zip ./$UNRARCACHE
 cd ..
done
echo done\!
unset IFS

You can change resize parameter with width x height like this:
 find ./tmp/$UNRARCACHE -name *.jpg -print -exec mogrify -resize 512x1308 {} \;

or by percentage:
 find ./tmp/$UNRARCACHE -name *.jpg -print -exec mogrify -resize 50% {} \;

Execute: copy zipresizer.sh to the directory that you wanna to resize, and execute it use ". "
#. rarresizer.sh

Warning:
1. All rar archive files in directory will be resized.
2. Verify your permissions.
3. not use "./" like below when you execute it:
#./rarresizer.sh
4. Only jpg and png will be resize.
5. It will delete *.txt and *.url in your rar archive file.
6. You must delete "tmp" manually after resizing done.

這個網誌中的熱門文章

關於Dell XPS 15 (9550) / Precision 15 (5510) UHD (4K) 螢幕閃爍問題 (已解決)

How to convert GPT to MBR without delete volume

2010.08.22 微星GUS體驗會心得