Just for funsies, I did a slight rewrite using my scription[1] library:

--8<------------------------------------------------------------------------------
#!/usr/bin/python3
"""
Convert scanned images: contrast is increased, size is enlarged,
format is changed from jpeg to png.
"""

from __future__ import print_function   # only needed if running in 2
from glob import glob
from scription import *

@Command(
        threshold=Spec('cutoff value for white vs black', OPTION, type=int, 
default=66),
        verify=Spec('confirm conversion by viewing on screen', FLAG),
        )
def image_convert(verify, threshold):
    for count, input in enumerate(sorted(glob('*.JPG')), start=1):
        output = '{0:02d}.png'.format(count)
        # only prints if --verbose on commandline
        print('Going to convert {} to {}'.format(input, output))
        while True:
            # Execute automatically parses into a list
            attempt = Execute(
                    'convert -threshold {}% {} {}'.format(threshold, input, 
output),
                    interactive='echo',
                    )
            if attempt.returncode:
                raise SystemExit(attempt.returncode)
            if not verify:
                break
            attempt = Execute(
                    'display_the_png {}'.format(output),
                    interactive='echo',
                    )
            if attempt.returncode:
                raise SystemExit(attempt.returncode)
            if get_response('Does the image look good?'):
                break
            threshold = get_response("New threshold value:", type=int)
        # conversion looks good, or manual verification skipped
        print('going to print {0}'.format(output))
        attempt = Execute(
                'lpr -o fit-to-page -o media=A4 {}'.format(output),
                interactive='echo',
                )
        if attempt.returncode:
            raise SystemExit(attempt.returncode)

Main()
--8<------------------------------------------------------------------------------

Opinions about the usability of the above script, both as the script writer and 
as the user, welcomed.

--
~Ethan~


[1] yes, everyone apparently writes their own command-line processor -- this 
one is mine.  ;)
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to