Use getexif instead of info.get('exif'). Add --quality where missing.
This commit is contained in:
parent
357669a684
commit
15141d22cb
3 changed files with 10 additions and 6 deletions
6
crop.py
6
crop.py
|
@ -5,7 +5,7 @@ import sys
|
||||||
from voussoirkit import pathclass
|
from voussoirkit import pathclass
|
||||||
from voussoirkit import pipeable
|
from voussoirkit import pipeable
|
||||||
|
|
||||||
def crop(file, crops, *, inplace=False):
|
def crop(file, crops, *, inplace=False, quality=100):
|
||||||
image = PIL.Image.open(file.absolute_path)
|
image = PIL.Image.open(file.absolute_path)
|
||||||
if len(crops) == 2:
|
if len(crops) == 2:
|
||||||
crops.extend(image.size)
|
crops.extend(image.size)
|
||||||
|
@ -27,7 +27,7 @@ def crop(file, crops, *, inplace=False):
|
||||||
newname = file.parent.with_child(base + suffix).add_extension(file.extension)
|
newname = file.parent.with_child(base + suffix).add_extension(file.extension)
|
||||||
|
|
||||||
pipeable.stdout(newname.absolute_path)
|
pipeable.stdout(newname.absolute_path)
|
||||||
image.save(newname.absolute_path, exif=image.info.get('exif', b''), quality=100)
|
image.save(newname.absolute_path, exif=image.getexif(), quality=quality)
|
||||||
|
|
||||||
def crop_argparse(args):
|
def crop_argparse(args):
|
||||||
patterns = pipeable.input(args.pattern, skip_blank=True, strip=True)
|
patterns = pipeable.input(args.pattern, skip_blank=True, strip=True)
|
||||||
|
@ -38,6 +38,7 @@ def crop_argparse(args):
|
||||||
file,
|
file,
|
||||||
crops=args.crops,
|
crops=args.crops,
|
||||||
inplace=args.inplace,
|
inplace=args.inplace,
|
||||||
|
quality=args.quality,
|
||||||
)
|
)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
@ -47,6 +48,7 @@ def main(argv):
|
||||||
parser.add_argument('pattern')
|
parser.add_argument('pattern')
|
||||||
parser.add_argument('crops', nargs='+', type=int, default=None)
|
parser.add_argument('crops', nargs='+', type=int, default=None)
|
||||||
parser.add_argument('--inplace', action='store_true')
|
parser.add_argument('--inplace', action='store_true')
|
||||||
|
parser.add_argument('--quality', type=int, default=100)
|
||||||
parser.set_defaults(func=crop_argparse)
|
parser.set_defaults(func=crop_argparse)
|
||||||
|
|
||||||
args = parser.parse_args(argv)
|
args = parser.parse_args(argv)
|
||||||
|
|
|
@ -2,10 +2,11 @@ import argparse
|
||||||
import PIL.Image
|
import PIL.Image
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
from voussoirkit import imagetools
|
||||||
from voussoirkit import pathclass
|
from voussoirkit import pathclass
|
||||||
from voussoirkit import pipeable
|
from voussoirkit import pipeable
|
||||||
|
|
||||||
def grayscale(filename, *, inplace=False):
|
def grayscale(filename, *, inplace=False, quality=100):
|
||||||
filename = pathclass.Path(filename)
|
filename = pathclass.Path(filename)
|
||||||
|
|
||||||
basename = filename.replace_extension('').basename
|
basename = filename.replace_extension('').basename
|
||||||
|
@ -20,14 +21,14 @@ def grayscale(filename, *, inplace=False):
|
||||||
|
|
||||||
image = PIL.Image.open(filename.absolute_path)
|
image = PIL.Image.open(filename.absolute_path)
|
||||||
image = image.convert('LA').convert(image.mode)
|
image = image.convert('LA').convert(image.mode)
|
||||||
image.save(new_filename.absolute_path, exif=image.info.get('exif', b''))
|
image.save(new_filename.absolute_path, exif=image.getexif(), quality=quality)
|
||||||
return new_filename
|
return new_filename
|
||||||
|
|
||||||
def grayscale_argparse(args):
|
def grayscale_argparse(args):
|
||||||
patterns = pipeable.input_many(args.patterns, skip_blank=True, strip=True)
|
patterns = pipeable.input_many(args.patterns, skip_blank=True, strip=True)
|
||||||
files = pathclass.glob_many_files(patterns)
|
files = pathclass.glob_many_files(patterns)
|
||||||
for file in files:
|
for file in files:
|
||||||
new_filename = grayscale(file, inplace=args.inplace)
|
new_filename = grayscale(file, inplace=args.inplace, quality=args.quality)
|
||||||
if new_filename:
|
if new_filename:
|
||||||
pipeable.stdout(new_filename.absolute_path)
|
pipeable.stdout(new_filename.absolute_path)
|
||||||
|
|
||||||
|
@ -38,6 +39,7 @@ def main(argv):
|
||||||
|
|
||||||
parser.add_argument('patterns', nargs='+')
|
parser.add_argument('patterns', nargs='+')
|
||||||
parser.add_argument('--inplace', action='store_true')
|
parser.add_argument('--inplace', action='store_true')
|
||||||
|
parser.add_argument('--quality', type=int, default=100)
|
||||||
parser.set_defaults(func=grayscale_argparse)
|
parser.set_defaults(func=grayscale_argparse)
|
||||||
|
|
||||||
args = parser.parse_args(argv)
|
args = parser.parse_args(argv)
|
||||||
|
|
|
@ -101,7 +101,7 @@ def resize(
|
||||||
image = image.convert('RGB')
|
image = image.convert('RGB')
|
||||||
|
|
||||||
pipeable.stdout(new_name.absolute_path)
|
pipeable.stdout(new_name.absolute_path)
|
||||||
image.save(new_name.absolute_path, exif=image.info.get('exif', b''), quality=quality)
|
image.save(new_name.absolute_path, exif=image.getexif(), quality=quality)
|
||||||
|
|
||||||
def resize_argparse(args):
|
def resize_argparse(args):
|
||||||
patterns = pipeable.input(args.pattern, skip_blank=True, strip=True)
|
patterns = pipeable.input(args.pattern, skip_blank=True, strip=True)
|
||||||
|
|
Loading…
Reference in a new issue