Use argparse for grayscale.py.
This commit is contained in:
parent
058dbbffc0
commit
58e5097639
1 changed files with 31 additions and 10 deletions
41
grayscale.py
41
grayscale.py
|
@ -1,3 +1,4 @@
|
|||
import argparse
|
||||
import PIL.Image
|
||||
import sys
|
||||
|
||||
|
@ -5,17 +6,37 @@ from voussoirkit import pathclass
|
|||
from voussoirkit import pipeable
|
||||
from voussoirkit import winglob
|
||||
|
||||
def grayscale(filename, *, inplace=False):
|
||||
filename = pathclass.Path(filename)
|
||||
|
||||
basename = filename.replace_extension('').basename
|
||||
if basename.endswith('_gray'):
|
||||
return
|
||||
|
||||
if inplace:
|
||||
new_filename = filename
|
||||
else:
|
||||
basename += '_gray'
|
||||
new_filename = filename.parent.with_child(basename).add_extension(filename.extension)
|
||||
|
||||
image = PIL.Image.open(filename.absolute_path).convert('LA')
|
||||
print(f'{new_filename.relative_path}')
|
||||
image.save(new_filename.absolute_path)
|
||||
|
||||
def grayscale_argparse(args):
|
||||
filenames = winglob.glob(args.pattern)
|
||||
for filename in filenames:
|
||||
return grayscale(filename, inplace=args.inplace)
|
||||
|
||||
def main(argv):
|
||||
for pattern in pipeable.go(argv, strip=True, skip_blank=True):
|
||||
filenames = winglob.glob(pattern)
|
||||
for filename in filenames:
|
||||
filename = pathclass.Path(filename)
|
||||
if filename.replace_extension('').basename.endswith('_gray'):
|
||||
continue
|
||||
new_filename = filename.replace_extension('').absolute_path + '_gray' + filename.dot_extension
|
||||
print(f'{filename.basename} -> {new_filename.basename}')
|
||||
image = PIL.Image.open(filename.absolute_path).convert('LA')
|
||||
image.save(new_filename)
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
|
||||
parser.add_argument('pattern')
|
||||
parser.add_argument('--inplace', dest='inplace', action='store_true')
|
||||
parser.set_defaults(func=grayscale_argparse)
|
||||
|
||||
args = parser.parse_args(argv)
|
||||
return args.func(args)
|
||||
|
||||
if __name__ == '__main__':
|
||||
raise SystemExit(main(sys.argv[1:]))
|
||||
|
|
Loading…
Reference in a new issue