Отъедание одного файла

Софт под Linux, разные программы, но только связанные с Linux

Модератор: /dev/random

Аватара пользователя
estaf
Сообщения: 459
ОС: archLinux какой-то x86_64

Отъедание одного файла

Сообщение estaf »

Решил сделать, под себя любимого, скриптик, который бы производил некоторые эффекты с графическими файлами и собирал, заодно, их в один файл.

Код: Выделить всё

#!/bin/bash
#

SRC="/home/iron/Desktop/1"    # Путь к исходным файлам
                #
ROOT="/home/iron/Desktop"    # root/base дира, куда "складывать" файлы
                #
EXT=".jpg"            #
EXT2=".png"                     # Или .JPG, или .png (тип файлов источника/приемника)

# That's all you *have* to set up

# IMAGEMAGICK VARIABLES

TILEW=4                 # Number of images across
TILEH=1                 # это сейчас неважно..
GEOMETRYW=200           # Width of image tiles
PADX=2                  # Padding in the x direction
PADY=5                  # Padding in the y direction
LABEL=`basename "%f"`   # Print filenames under tiles
BGCOLOR=white
RENUMBER=0
FONT="-mdk-helvetica-medium-r-normal--13-130-75-75-p-71-tcvn-5712"
TARGET=`date +%Y_%m_%d`
WIDTH=800
CONTACT=true
RESIZE=false
ZIP=false
INCREMENT=1
POLAROID=true
ANGLE=-2
THUMBNAIL=200
BORDERCOLOR=snow
BACKGROUND=black
PRE=1
USAGE="$0 [-c] [-n name] [-r] [-t target] [-w width] [-z]"
TITLE=MET-ART

while getopts cn:rt:w:z OPTION;
do
    case "$OPTION" in
        c) CONTACT="true";;
        n) NAME="$OPTARG";;
        r) RESIZE="true";;
        t) TARGET="$OPTARG";;
        w) WIDTH="$OPTARG";;
        ?) echo $USAGE; exit 1;;
    esac
done

clear

while [ -d "$ROOT/$TARGET" ];
do
    INCREMENT=$(($INCREMENT+1))
    TARGET=`echo $TARGET | awk -F'-' '{print $1}'`-$INCREMENT
    echo "Target exists, using $TARGET"
done

mkdir $ROOT/$TARGET

BIGPATH="$ROOT/$TARGET"

echo "Copying images . . ."
cp $SRC/*$EXT $BIGPATH &&
echo "Finished copying images."

chmod -x $BIGPATH/*$EXT        # For some reason my pix have the executable
                # bit set

if [ $POLAROID == true ]; then
    mkdir $BIGPATH/$PRE
    mkdir $BIGPATH/$ANGLE
    cp $BIGPATH/*$EXT $BIGPATH/$ANGLE
        for image2 in `ls $BIGPATH/$ANGLE`
    do
        NUMCOUNT=`printf "%03d" $NUMBER`
        mv $BIGPATH/$ANGLE/$image2 "$BIGPATH/$PRE/$NUMCOUNT$EXT2"
        NUMBER=$(($NUMBER+1))
    done
    echo "changing effects . . ."
    mogrify -geometry $WIDTH $BIGPATH/$PRE/*$EXT2
        convert -thumbnail $THUMBNAIL -bordercolor $BORDERCOLOR -background $BACKGROUND -polaroid $ANGLE $BIGPATH/$PRE/*$EXT2
        rm $BIGPATH/*$EXT
        for image3 in `ls $BIGPATH/$PRE/*-*`
        do
                mv $image3 $BIGPATH/
        done
        rm -rf $BIGPATH/$PRE
        rm -rf $BIGPATH/$ANGLE
fi

if [ $CONTACT == true ]; then
    totalimages=`ls -1 $BIGPATH | wc -l`
    maximages=$(($TILEW*$TILEH))
    c=1
    e=$maximages
    count=1
    if [ $totalimages -le $maximages ];
    then
        echo "Generating contact sheet . . ."
        montage -background $BGCOLOR -title $TITLE -tile $TILEW\x$TILEH -geometry +$PADX+$PADY $BIGPATH/*$EXT2 $BIGPATH/index$EXT2
    else
        for i in `find $BIGPATH -type f -iname *$EXT2`
        do
            echo $i >> $BIGPATH/dirlist.$$
        done
        sort $BIGPATH/dirlist.$$ > $BIGPATH/dirlist2.$$
        mv $BIGPATH/dirlist2.$$ $BIGPATH/dirlist.$$
        while [ $c -le $totalimages ]; do
            numcount=`printf "%02d" $count`
            sed -n $c,$e\p $BIGPATH/dirlist.$$ > $BIGPATH/index-$numcount
            count=$(($count+1))
            c=$(($e+1))
            e=$(($e+$maximages))
        done
        rm $BIGPATH/dirlist.$$
        of=`ls $BIGPATH/index-* | wc -l`
        for l in $BIGPATH/index-*
        do
            inumber=`basename $l | sed s/index-//`
            echo "Creating index for $l . . ."
            montage -background $BGCOLOR -title "$TITLE" -tile $TILEW\x$TILEH -geometry +$PADX+$PADY -label $LABEL `cat $l` $l$EXT
            wait
            rm $l
        done
    fi
fi

echo "Done!"
exit


непонятно другое. С какого горя он отъедает, всегда, последний файл. То есть, если на входе будет их 4, то на выходе всегда 3 итд.

Кто-нибудь может объяснить?
Спасибо сказали: