Python3 图片水平镜像实现

 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);

 

posted on 2018-02-04 15:53  FightLi  阅读(2771)  评论(0编辑  收藏  举报