1 # -*- coding: utf-8 -*-
2 """
3 Created on Sun Feb 4 12:15:38 2018
4
5 @author: markli
6 """
7 from PIL import Image;
8 import os;
9
10 class Mirror:
11 def __init__(self):
12 #self.path = path;
13 self.formats = ['.png','.jpg','.jpeg','.bmp','.gif'];
14
15 def ImageMirror(self,fp,savepath):
16 filepath = fp;
17 f_format = '';
18 if(os.path.exists(filepath) == False):
19 print("路径不存在");
20 return;
21 f_format = os.path.splitext(filepath)[1].lower();
22 if(f_format not in self.formats):
23 print("图片格式不正确");
24 return;
25
26 img = Image.open(filepath);
27 img_pixel = img.load();
28 mirror = Image.new(img.mode,img.size,"white");
29
30 width, height = img.size;
31 """水平镜像转换,遍历每个像素点,将后列变前列"""
32 for y in range(height):
33 for x in range(width):
34 pixel = img_pixel[width-1-x,y];
35 mirror.putpixel((x,y),pixel);
36
37 sp,f = os.path.splitext(savepath);
38 if(f != f_format):
39 savepath = sp + f_format;
40 mirror.save(savepath);
41
42 def TranslateAll(self,filedir,savedir):
43 """
44 将目标图片集全部进行镜像处理
45 filedir 目标图片集所在的文件夹路径
46 savedir 镜像图片保存的文件夹路径
47 """
48 filelist = self.Getfile(filedir);
49 if(os.path.exists(savedir) == True):
50 print("保存路径已存在,请重新设定路径");
51 return;
52 os.mkdir(savedir);
53 for f in filelist:
54 fn,ext = os.path.splitext(os.path.split(f)[1]);
55 fn = fn + "mirror"; #给定镜像图片的名称
56 filename = fn + ext; #镜像图片与原图具有相同的扩展名
57 savefile = os.path.join(savedir,filename); #构造出完整的保存路径
58 self.ImageMirror(f,savefile);
59
60 def Getfile(self,filedir):
61 """获得文件夹filedir目录下所有的文件路径"""
62 filepath = [];
63 if(os.path.exists(filedir) == False):
64 print("路径不存在");
65 return filepath;
66 if(os.path.isdir(filedir) == False):
67 print("该路径不是文件夹");
68 return filepath;
69 filelist = os.listdir(filedir);
70
71 for f in filelist:
72 f = os.path.join(filedir,f);
73 if(os.path.isfile(f) == True):
74 filepath.append(f);
75 elif(os.path.isdir(f) == True):
76 filepath.extend(self.Getfile(f));
77 else:
78 continue;
79 return filepath;
80
81 #fp = "C:\\Users\\yangp\\Desktop\\python_b_blue.jpg";
82 #m = Mirror();
83 #savep = "C:\\Users\\yangp\\Desktop\\python_b_blue_m.jpg";
84 #m.ImageMirror(fp,savep);
85
86 filedir = "C:\\Users\\yangp\\Desktop\\mirror";
87 savedir = "C:\\Users\\yangp\\Desktop\\mirror2";
88 m = Mirror();
89 m.TranslateAll(filedir,savedir);