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