diff options
Diffstat (limited to 'Scripts/cleanup_scans.sh')
-rwxr-xr-x | Scripts/cleanup_scans.sh | 222 |
1 files changed, 0 insertions, 222 deletions
diff --git a/Scripts/cleanup_scans.sh b/Scripts/cleanup_scans.sh deleted file mode 100755 index 42fd127..0000000 --- a/Scripts/cleanup_scans.sh +++ /dev/null @@ -1,222 +0,0 @@ -#!/bin/bash - -# -# cleanup_scans.sh -# -# Bash script to deskew and deborder scanned images -# -# Copyright (C) 2008, 2015 Moreno Marzolla -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# Version history: -# -# Version 0.1, 2008/08/03 - initial version -# Version 0.2, 2015/04/11 - changed /bin/sh to /bin/bash -# -# Author: moreno.marzolla (at) unibo.it -# http://www.moreno.marzolla.name/ - - -# -# This script is used to process a bunch of color, grayscale or B/W scans -# Syntax: -# -# cleanup_scans.sh <file1> <file2> ... -# -# This will process file1, file2... and produce file1.tiff file2.tiff... -# in the current directory. -# -# Color scans will be converted into color TIFFs; Grayscale or black/white -# scans will be converted into B/W tiffs (unless the --forcecolor option -# is used). Both color and grayscale pages are automatically deskewed. -# -# At the moment this script contains some hardcoded defaults, which need -# to be removed before using it as a general-purpose scan-to-tiff processor -# -# This script requires the following external applications: -# - ImageMagick (convert and mogrify) -# - netpbm, the current development version from svn (it uses the pamtilt -# utility which is not included into the stable netpbm distribution) -# - perl (for evaluating a simple expression; I was unable to do that -# using only bash) -# - -convert=convert -pamtilt=pamtilt -crop_geometry=2400x3250+0+0 -deskew=yes -forcecolor=no -deborder=yes - -function process_color_image { -# Adjust color levels and crop - local base=`basename $1 .image` - local skew=0 - local deborder_cmd=(-fuzz 10% -fill white -draw "color 2540,3500 floodfill" ) - - echo -n "Processing COLOR image $1..." - - if [ $deborder == "no" ]; then - deborder_cmd=(); - fi - - if [ $deskew == "yes" ]; then - echo -n "Tilt" - - skew=`$convert -quiet $1 \ - -crop $crop_geometry \ - +repage \ - -level 10%,80%,1 \ - -monochrome \ - "pnm:-" | $pamtilt` - - skew=`perl -e "if (abs($skew)>0.1 && abs($skew)<3.0) { print (- $skew) } else { print 0 }"` - echo -n "(${skew})..." - fi - - echo -n "converting..." - convert $1 \ - -background white \ - -rotate $skew \ - +matte "${deborder_cmd[@]}" \ - -level 10%,80%,1 \ - -crop $crop_geometry \ - +repage \ - +matte \ - -format tiff \ - $base.tiff - - \rm -f $base.pnm - echo "done" -} - - -function process_gray_image { - local base=`basename $1 .image` - local skew=0 - local deborder_cmd=(-stroke black -fill black -draw "rectangle 0,0 50,3505" -draw "rectangle 0,0 2548,50" -draw "rectangle 0,3405 2548,3505" -draw "rectangle 2448,0 2548,3505" -fill white -draw "color 0,0 floodfill") - - if [ $deborder == "no" ]; then - deborder_cmd=(); - fi - - echo -n "Processing GRAY image $1..." - -# If the image is already black and white, then simpler operations must be performed - local bitssample=`tiffinfo $1 | grep Bits | tr -c -d [:digit:]` - if [ $bitssample -ne "1" ]; then - echo -n "B/W (slow)..." - $convert -quiet $1 \ - -colorspace gray \ - -level 10%,90%,1 \ - -blur 2 \ - +dither \ - -monochrome \ - -flatten "${deborder_cmd[@]}" \ - -crop $crop_geometry \ - +repage \ - \( -write $base.pnm \) \ - +matte $base.tiff - else - echo -n "B/W (fast)..." - $convert -quiet $1 "${deborder_cmd[@]}" \ - -crop $crop_geometry \ - +repage \ - \( -write $base.pnm \) \ - +matte $base.tiff - fi - - if [ $deskew == "yes" ]; then - echo -n "Tilt" - skew=`$pamtilt $base.pnm` - skew=`perl -e "if (abs($skew)>0.1 && abs($skew)<3) { print (- $skew) } else { print 0 }"` - echo -n "(${skew})..." - fi - - echo -n "Rotate..." - mogrify -quiet \ - +dither \ - -rotate $skew \ - -monochrome \ - +matte \ - -format tiff \ - -compress Group4 \ - $base.tiff - - \rm -f $base.pnm - echo "done" -} - -function print_usage { -cat<<EOF - -Usage: $0 [--help] [--nodeskew] [--forcecolor] [--nodeborder] <inputfile> ... - ---nodeskew Do not deskew the image (default: deskew) ---forcecolor Do not convert grayscale images to B/W (default: convert to B/W) ---nodeborder Do not attempt to remove the black border (default: remove) ---help Print this message - -EOF - -exit -1; -} - -if [ $# -lt 1 ]; then - print_usage; -fi - -while [ $# -gt 0 ]; do - file=$1 - - shift; - - if [ $file == "--help" ]; then - print_usage; - fi - - if [ $file == "--nodeskew" ]; then - deskew=no - continue - fi - - if [ $file == "--forcecolor" ]; then - forcecolor=yes - continue - fi - - if [ $file == "--nodeborder" ]; then - deborder="no"; - continue - fi - - if [ ! -f $file ]; then - echo "$file does not exist" - continue - fi - - if [ $forcecolor == "yes" ]; then - process_color_image $file - else - photoint=`tiffinfo ${file} | grep -i "Photometric Interpretation"` - - case $photoint in - *"RGB color") process_color_image $file ;; - *) process_gray_image $file ;; - esac - fi - -done |