adopted by many Linux distributions as well as FreeBSD ports: o jpegtran: add "-perfect" switch: Fail if there are non-transformable edge blocks. o jpegtran: add "-crop" switch: Crop to a rectangular subarea. o jpegtran: correct EXIF handling. o jpegexiforient: Get and set the Exif Orientation Tag. o exifautotran: Transforms Exif files so that Orientation becomes 1. Suggested by dzoe on #NetBSD IRCNet.
38 lines
804 B
Bash
38 lines
804 B
Bash
#! /bin/sh
|
|
#
|
|
# Based on http://www.jpegclub.org/exifautotran.txt
|
|
#
|
|
if [ "$#" = "0" ]
|
|
then
|
|
cat << EOF 1>&2
|
|
usage: exifautotran [list of files]
|
|
Transforms Exif files so that Orientation becomes 1
|
|
EOF
|
|
exit 1
|
|
fi
|
|
|
|
for i
|
|
do
|
|
case `jpegexiforient -n "$i"` in
|
|
1) transform="";;
|
|
2) transform="-flip horizontal";;
|
|
3) transform="-rotate 180";;
|
|
4) transform="-flip vertical";;
|
|
5) transform="-transpose";;
|
|
6) transform="-rotate 90";;
|
|
7) transform="-transverse";;
|
|
8) transform="-rotate 270";;
|
|
*) transform="";;
|
|
esac
|
|
if test -n "$transform"; then
|
|
echo Executing: jpegtran -copy all $transform $i
|
|
jpegtran -copy all $transform "$i" > tempfile
|
|
if test $? -ne 0; then
|
|
echo Error while transforming $i - skipped.
|
|
else
|
|
rm "$i"
|
|
mv tempfile "$i"
|
|
jpegexiforient -1 "$i" > /dev/null
|
|
fi
|
|
fi
|
|
done
|