2
|
1 import Image
|
|
2 import ImageFilter
|
|
3 import ImageChops
|
|
4 import os
|
|
5 import sys
|
|
6
|
|
7 def isodd(num):
|
|
8 return num & 1 and True or False
|
|
9
|
|
10 def main():
|
|
11 numArgs = len(sys.argv)
|
|
12
|
|
13 if numArgs < 2:
|
|
14 print "USAGE: provide input, output, functions, parameters"
|
|
15 exit(1)
|
|
16
|
|
17 listOfValues = sys.argv[1:]
|
|
18
|
|
19 try:
|
|
20 imageIn = Image.open(listOfValues[0])
|
|
21 except IOError:
|
|
22 print "cannot open: ", listOfValues[0]
|
|
23
|
|
24 if listOfValues[2] == "median":
|
|
25 size = int(listOfValues[3]);
|
|
26 # prevent size to be even
|
|
27 if size & 1 == False:
|
|
28 size = size + 1
|
|
29 imageMedian = imageIn.filter(ImageFilter.MedianFilter(size))
|
|
30 imageOut = imageMedian.save(listOfValues[1], listOfValues[4])
|
|
31 # imageMedian.show()
|
|
32 print "Applied a median filter of the given size."
|
|
33 elif listOfValues[2] == "emboss":
|
|
34 imageEmboss = imageIn.filter(ImageFilter.EMBOSS)
|
|
35 imageOut = imageEmboss.save(listOfValues[1], listOfValues[3])
|
|
36 # imageEmboss.show()
|
|
37 print "Applied an emboss filter on the image."
|
|
38 elif listOfValues[2] == "blur":
|
|
39 imageBlur = imageIn.filter(ImageFilter.BLUR)
|
|
40 imageOut = imageBlur.save(listOfValues[1], listOfValues[3])
|
|
41 # imageBlur.show()
|
|
42 print "Applied a blur filter on the image."
|
|
43 elif listOfValues[2] == "contour":
|
|
44 imageContour = imageIn.filter(ImageFilter.CONTOUR)
|
|
45 imageOut = imageContour.save(listOfValues[1], listOfValues[3])
|
|
46 # imageContour.show()
|
|
47 print "Applied a contour filter on the image."
|
|
48 elif listOfValues[2] == "detail":
|
|
49 imageDetail = imageIn.filter(ImageFilter.DETAIL)
|
|
50 imageOut = imageDetail.save(listOfValues[1], listOfValues[3])
|
|
51 # imageDetail.show()
|
|
52 print "Applied a detial filter on the image."
|
|
53 elif listOfValues[2] == "edge_enhance":
|
|
54 imageEdgeEnhance = imageIn.filter(ImageFilter.EDGE_ENHANCE)
|
|
55 imageOut = imageEdgeEnhance.save(listOfValues[1], listOfValues[3])
|
|
56 # imageEdgeEnhance.show()
|
|
57 print "Applied an edge enhance filter on the image."
|
|
58 elif listOfValues[2] == "edge_enhance_more":
|
|
59 imageEdgeEnhanceMore = imageIn.filter(ImageFilter.EDGE_ENHANCE_MORE)
|
|
60 imageOut = imageEdgeEnhanceMore.save(listOfValues[1], listOfValues[3])
|
|
61 # imageEdgeEnhanceMore.show()
|
|
62 print "Applied an eddge enhance more filter on the image."
|
|
63 elif listOfValues[2] == "find_edges":
|
|
64 imageFindEdges = imageIn.filter(ImageFilter.FIND_EDGES)
|
|
65 imageOut = imageFindEdges.save(listOfValues[1], listOfValues[3])
|
|
66 # imageFindEdges.show()
|
|
67 print "Applied a find_edges filter on the image."
|
|
68 elif listOfValues[2] == "sharpen":
|
|
69 imageSharpen = imageIn.filter(ImageFilter.SHARPEN)
|
|
70 imageOut = imageSharpen.save(listOfValues[1], listOfValues[3])
|
|
71 # imageSharpen.show()
|
|
72 print "Applied a sharpen filter on the image."
|
|
73 elif listOfValues[2] == "smooth":
|
|
74 imageSmooth = imageIn.filter(ImageFilter.SMOOTH)
|
|
75 imageOut = imageSmooth.save(listOfValues[1], listOfValues[3])
|
|
76 # imageSmooth.show()
|
|
77 print "Applied a smooth filter on the image."
|
|
78 elif listOfValues[2] == "smooth_more":
|
|
79 imageSmoothMore = imageIn.filter(ImageFilter.SMOOTH_MORE)
|
|
80 imageOut = imageSmoothMore.save(listOfValues[1], listOfValues[3])
|
|
81 # imageSmoothMore.show()
|
|
82 print "Applied a smooth_more filter on the image."
|
|
83 elif listOfValues[2] == "min":
|
|
84 size = int(listOfValues[3])
|
|
85 # prevent size to be even
|
|
86 if size & 1 == False:
|
|
87 size = size + 1
|
|
88 imageMin = imageIn.filter(ImageFilter.MinFilter(size))
|
|
89 imageOut = imageMin.save(listOfValues[1], listOfValues[4])
|
|
90 # imageMin.show()
|
|
91 print "Applied a min filter of the given size on the image"
|
|
92 elif listOfValues[2] == "max":
|
|
93 size = int(listOfValues[3])
|
|
94 # prevent size to be even
|
|
95 if size & 1 == False:
|
|
96 size = size + 1
|
|
97 imageMax = imageIn.filter(ImageFilter.MaxFilter(size))
|
|
98 imageOut = imageMax.save(listOfValues[1], listOfValues[4])
|
|
99 # imageMax.show()
|
|
100 print "Applied a max filter of the given size on the image"
|
|
101 elif listOfValues[2] == "mode":
|
|
102 size = int(listOfValues[3])
|
|
103 # prevent size to be even
|
|
104 if size & 1 == False:
|
|
105 size = size + 1
|
|
106 imageMode = imageIn.filter(ImageFilter.ModeFilter(size))
|
|
107 imageOut = imageMode.save(listOfValues[1], listOfValues[4])
|
|
108 # imageMode.show()
|
|
109 print "Applied a mode filter of the given size on the image"
|
|
110 elif listOfValues[2] == "invert":
|
|
111 imageInvert = ImageChops.invert(imageIn)
|
|
112 imageOut = imageInvert.save(listOfValues[1], listOfValues[3])
|
|
113 # imageInvert.show()
|
|
114 print "Inverted the image."
|
|
115
|
|
116 if __name__ == "__main__":
|
|
117 main() |