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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM