Skip to content

Commit 9d23013

Browse files
committed
0.20210423: added argparse and cli options
1 parent fd6003c commit 9d23013

File tree

2 files changed

+54
-29
lines changed

2 files changed

+54
-29
lines changed

croppertk.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,21 @@
1515
'''
1616

1717
PROGNAME = 'Cropper-Tk'
18-
VERSION = '0.20210218'
18+
VERSION = '0.20210423'
1919

2020
import os
2121
import sys
22+
import argparse
2223
from PIL import Image, ImageTk, ImageFilter, ImageChops
2324

2425
py_version = sys.version
2526

2627
if py_version[0] == "2":
2728
# for Python2
2829
reload(sys)
29-
sys.setdefaultencoding(sys.stdout.encoding)
30+
sysenc = sys.stdout.encoding
31+
if sysenc:
32+
sys.setdefaultencoding(sysenc)
3033

3134
import Tkinter as tk
3235
import tkFileDialog as tkfd
@@ -492,18 +495,15 @@ def __repr__(self):
492495
self.top, self.right, self.bottom)
493496

494497

495-
def main():
496-
filename = None
497-
if len(sys.argv) > 1:
498-
filename = sys.argv[1]
499-
# else:
500-
# print ("Need a filename")
501-
# return
502-
498+
def main(filename):
503499
app = Application(filename=filename)
504500
app.master.title(PROGNAME)
505501
app.mainloop()
506502

507503

508504
if __name__ == '__main__':
509-
main()
505+
parser = argparse.ArgumentParser(
506+
description='Cropper Image')
507+
parser.add_argument('filename', nargs='?', default=None, help='image file name')
508+
args = parser.parse_args()
509+
main(args.filename)

croppertktopdf.py

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,11 @@
1616
'''
1717

1818
PROGNAME = 'CropperTktoPDF'
19-
VERSION = '0.20210218'
19+
VERSION = '0.20210423'
2020

2121
import os
2222
import sys
23+
import argparse
2324
import re
2425
from PIL import Image, ImageTk, ImageFilter, ImageChops
2526
from reportlab.pdfgen.canvas import Canvas
@@ -29,7 +30,9 @@
2930
if py_version[0] == "2":
3031
# for Python2
3132
reload(sys)
32-
sys.setdefaultencoding(sys.stdout.encoding)
33+
sysenc = sys.stdout.encoding
34+
if sysenc:
35+
sys.setdefaultencoding(sysenc)
3336

3437
import Tkinter as tk
3538
import tkFileDialog as tkfd
@@ -51,10 +54,12 @@
5154
default_div = 1
5255

5356
class Application(tk.Frame):
54-
def __init__(self, master=None, filename=None):
57+
def __init__(self, master=None, filename=None, dpi=default_dpi, iformat=default_format, pdfname=None):
5558

5659
tk.Frame.__init__(self, master)
5760
self.grid()
61+
self.dpi = dpi
62+
self.ext = iformat
5863
self.createWidgets()
5964
self.croprect_start = None
6065
self.croprect_end = None
@@ -70,8 +75,6 @@ def __init__(self, master=None, filename=None):
7075
self.h = 1
7176
self.x0 = 0
7277
self.y0 = 0
73-
self.dpi = default_dpi
74-
self.ext = default_format
7578
self.div = default_div
7679
self.cleanmargin = default_cleanmargin
7780
self.scale = None
@@ -95,9 +98,13 @@ def __init__(self, master=None, filename=None):
9598
if filenames:
9699
filename = filenames[0]
97100

101+
if pdfname:
102+
self.outfile = pdfname
103+
else:
104+
if filename:
105+
self.outfile = filename + '.pdf'
98106
if filename:
99107
self.filename = filename
100-
self.outfile = self.filename + '.pdf'
101108
self.loadimage()
102109

103110
def createWidgets(self):
@@ -118,11 +125,11 @@ def createWidgets(self):
118125

119126
self.dpiLabel = tk.Label(self.outputFrame, text='DPI')
120127
self.dpiBox = tk.Text(self.outputFrame, height=1, width=4)
121-
self.dpiBox.insert(1.0, str(default_dpi))
128+
self.dpiBox.insert(1.0, str(self.dpi))
122129

123130
self.formatLabel = tk.Label(self.outputFrame, text='F')
124131
self.formatBox = tk.Text(self.outputFrame, height=1, width=4)
125-
self.formatBox.insert(1.0, default_format)
132+
self.formatBox.insert(1.0, self.ext)
126133

127134
self.divLabel = tk.Label(self.outputFrame, text='div')
128135
self.divBox = tk.Text(self.outputFrame, height=1, width=2)
@@ -609,18 +616,36 @@ def __repr__(self):
609616
return '(%d,%d)-(%d,%d)' % (self.left,
610617
self.top, self.right, self.bottom)
611618

612-
def main():
613-
filename = None
614-
if len(sys.argv) > 1:
615-
filename = sys.argv[1]
616-
# else:
617-
# print ("Need a filename")
618-
# return
619-
620-
app = Application(filename=filename)
619+
def main(filename, dpi, iformat, pdfname):
620+
app = Application(filename=filename, dpi=dpi, iformat=iformat, pdfname=pdfname)
621621
app.master.title(PROGNAME)
622622
app.mainloop()
623623

624624

625625
if __name__ == '__main__':
626-
main()
626+
parser = argparse.ArgumentParser(
627+
description='Cropper Image to PDF')
628+
parser.add_argument(
629+
'-d',
630+
'--dpi',
631+
metavar='dpi',
632+
type=int,
633+
default=default_dpi,
634+
help='dpi for pdf output, default is 300')
635+
parser.add_argument(
636+
'-f',
637+
'--format',
638+
metavar='format',
639+
type=str,
640+
default=default_format,
641+
help='format trim image, default png')
642+
parser.add_argument(
643+
'-o',
644+
'--outfile',
645+
metavar='outfile',
646+
type=str,
647+
default=None,
648+
help='output pdf name, default None')
649+
parser.add_argument('filename', nargs='?', default=None, help='image file name')
650+
args = parser.parse_args()
651+
main(args.filename, args.dpi, args.format, args.outfile)

0 commit comments

Comments
 (0)