1
+ from PIL import Image
2
+ from PIL import ImageDraw
3
+ import logging
4
+
5
+
6
+ def load_a_picture (path ):
7
+ im = Image .open (path )
8
+ size = im .size
9
+ logging .info ("size is {}, mode is: {}" .format (size , im .mode ))
10
+ return im
11
+
12
+
13
+ def get_pixel_array (im , left_x , right_x , up_y , down_y ):
14
+ ary = []
15
+ for x in range (left_x , right_x ):
16
+ for y in range (up_y , down_y ):
17
+ ary .append (im .getpixel ((x , y )))
18
+ return ary
19
+
20
+
21
+ def create_new_ary (ary1 , ary2 ):
22
+ ary = []
23
+ for i in range (len (ary1 )):
24
+ r1 , g1 , b1 = ary1 [i ]
25
+ r2 , g2 , b2 = ary2 [i ]
26
+ r , g , b = r1 - r2 , g1 - g2 , b1 - b2
27
+ t = (r , g ,b )
28
+ ary .append (t )
29
+ return ary
30
+
31
+
32
+ def analysis_ary (rgbs ):
33
+ for i in range (len (rgbs )):
34
+ print (rgbs [i ])
35
+
36
+
37
+ def create_new_picture (pixels , width , height ):
38
+ result = Image .new (mode = "RGB" , size = (width , height ))
39
+ drawer = ImageDraw .Draw (result )
40
+ count = 0
41
+ for x in range (width ):
42
+ for y in range (height ):
43
+ drawer .point ((x , y ), fill = pixels [count ])
44
+ count += 1
45
+ return result
46
+
47
+
48
+ if __name__ == "__main__" :
49
+ logging .basicConfig (level = logging .DEBUG )
50
+ im = load_a_picture ("swan/balloons.jpg" )
51
+ size = im .size
52
+ width = size [0 ]
53
+ height = size [1 ]
54
+ ary1 = get_pixel_array (im , 0 , int (width / 2 ), 0 , height )
55
+ ary2 = get_pixel_array (im , int (width / 2 ), width , 0 , height )
56
+ logging .info ("len(ary1) is: {}" .format (len (ary1 )))
57
+ logging .info ("len(ary2) is: {}" .format (len (ary2 )))
58
+ ary = create_new_ary (ary1 , ary2 )
59
+ analysis_ary (ary )
60
+ result = create_new_picture (ary , int (width / 2 ), height )
61
+ result .show ()
0 commit comments