Jpegloop

From XPUB & Lens-Based wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Counting up

for ((i=1;i<=100;i++))
do
echo $i
done

Counting down

for ((i=1;i<=100;i++))
do
echo $i
done

Doing something

for ((i=1;i<=10;i++))
do
convert original.jpg -quality $i output$i.jpg
done

Fixing the filenames (zero padding with printf)

printf can be used to "zero-pad" a number (ie make a good filename from a counting number)

printf "%03d" 7

means "zero-pad" (add zeros) to always be 3 characters long, and outputs:

007

command substitution

$() means "command substitution" -- or do what's inside the parentheses and then substitute the result. This can be used to store the result of running printf in a variable (to then use again)

for ((i=1;i<=10;i++))
do
name=$(printf "%03d\n" $i)
convert original.jpg -quality $i output$name.jpg
done

Compressing the "lastframe" to perform an iterative compression

The trick here is to keep a "lastframe" copy that can always be used as the input to the convert command.

cp $j lastframe.jpg

for ((i=100;i>=1;i--))
do

name=$(printf "%03d\n" $((100-i)))
convert lastframe.jpg -quality $i output$name.jpg
cp output$name.jpg lastframe.jpg

done

ffmpeg -f image2 -i output%03d.jpg -r 10 $j.mp4

Converting the images to a movie

   ffmpeg -f image2 -i output%03d.jpg -r 10 output.mp4

Apply to a directory of files

The whole thing can be wrapped in a "for" loop to process a whole bunch of input images at once.

#!/bin/bash

for j
do
    cp $j lastframe.jpg

    for ((i=100;i>=1;i--))
    do
        name=$(printf "%03d\n" $((100-i)))
        convert lastframe.jpg -quality $i output$name.jpg
        # COPY THE CURRENT TO "lastframe.jpg"
        cp output$name.jpg lastframe.jpg
    
    done
    ffmpeg -f image2 -i output%03d.jpg -r 10 $j.mp4

done
Error in widget Vimeo: unable to write file /data/www/wdka.nl/pzwiki.wdka.nl/mw-mediadesign/extensions/Widgets/compiled_templates/wrt66275d7d72e5c3_29421308

http://vimeo.com/14969253