# -*- coding: utf-8 -*-
"""
Created on Sun Feb 4 12:15:38 2018 @author: markli
"""
from PIL import Image;
import os; class Mirror:
def __init__(self):
#self.path = path;
self.formats = ['.png','.jpg','.jpeg','.bmp','.gif']; def ImageMirror(self,fp,savepath):
filepath = fp;
f_format = '';
if(os.path.exists(filepath) == False):
print("路径不存在");
return;
f_format = os.path.splitext(filepath)[1].lower();
if(f_format not in self.formats):
print("图片格式不正确");
return; img = Image.open(filepath);
img_pixel = img.load();
mirror = Image.new(img.mode,img.size,"white"); width, height = img.size;
"""水平镜像转换,遍历每个像素点,将后列变前列"""
for y in range(height):
for x in range(width):
pixel = img_pixel[width-1-x,y];
mirror.putpixel((x,y),pixel); sp,f = os.path.splitext(savepath);
if(f != f_format):
savepath = sp + f_format;
mirror.save(savepath); def TranslateAll(self,filedir,savedir):
"""
将目标图片集全部进行镜像处理
filedir 目标图片集所在的文件夹路径
savedir 镜像图片保存的文件夹路径
"""
filelist = self.Getfile(filedir);
if(os.path.exists(savedir) == True):
print("保存路径已存在,请重新设定路径");
return;
os.mkdir(savedir);
for f in filelist:
fn,ext = os.path.splitext(os.path.split(f)[1]);
fn = fn + "mirror"; #给定镜像图片的名称
filename = fn + ext; #镜像图片与原图具有相同的扩展名
savefile = os.path.join(savedir,filename); #构造出完整的保存路径
self.ImageMirror(f,savefile); def Getfile(self,filedir):
"""获得文件夹filedir目录下所有的文件路径"""
filepath = [];
if(os.path.exists(filedir) == False):
print("路径不存在");
return filepath;
if(os.path.isdir(filedir) == False):
print("该路径不是文件夹");
return filepath;
filelist = os.listdir(filedir); for f in filelist:
f = os.path.join(filedir,f);
if(os.path.isfile(f) == True):
filepath.append(f);
elif(os.path.isdir(f) == True):
filepath.extend(self.Getfile(f));
else:
continue;
return filepath; #fp = "C:\\Users\\yangp\\Desktop\\python_b_blue.jpg";
#m = Mirror();
#savep = "C:\\Users\\yangp\\Desktop\\python_b_blue_m.jpg";
#m.ImageMirror(fp,savep); filedir = "C:\\Users\\yangp\\Desktop\\mirror";
savedir = "C:\\Users\\yangp\\Desktop\\mirror2";
m = Mirror();
m.TranslateAll(filedir,savedir);

Python3 图片水平镜像实现的更多相关文章

  1. CSS制作图片水平垂直居中

    所谓的图片水平垂直居中就是把图片放在一个容器元素中(容器大于图片尺寸或是指定了大小的容器),并且图片位居此容器正中间(中间是指元素容器的正中间),而图片不是以背景图片(background-image ...

  2. DIV里面的图片水平与垂直居中的方法

    <div class=“box”> <img /> </div> 1.水平居中: 1)box设置  text-align:center ;    text-alig ...

  3. DIV或者DIV里面的图片水平与垂直居中的方法

    <div class=“box”> <img /> </div> 水平居中的常用方式: text-align:center ——这可以实现子元素字体,图片的水平居中 ...

  4. [iOS] UICollectionView实现图片水平滚动

    最新更新: 简单封装了一下代码,参考新文章:UICollectionView实现图片水平滚动 先简单看一下效果: 新博客:http://wossoneri.github.io 准备数据 首先先加入一些 ...

  5. 图片水平垂直居中(兼容IE6,IE7,firefox,opera,safari,其中图片可以是任何块元素)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. css实现图片水平垂直居中

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. 使用Recyclerview实现图片水平自动循环滚动

    简介: 本篇博客主要介绍的是如何使用RecyclerView实现图片水平方向自动循环(跑马灯效果) 效果图: 思路: 1.准备m张图片 1.使用Recyclerview实现,返回无数个(实际Inter ...

  8. Win8Metro(C#)数字图像处理--2.19图像水平镜像

    原文:Win8Metro(C#)数字图像处理--2.19图像水平镜像  [函数名称] 图像水平镜像函数MirrorXProcess(WriteableBitmap src) [函数代码]      ...

  9. Python3图片处理头像

    一. 简介: Python3图片处理头像右上角类似QQ,微信右上角未读信息效果,其实没有实质作用,只是简单练习. 1. 环境: python3.5 random模块:生成随机数 PIL模块:图像处理模 ...

随机推荐

  1. php 利用root 权限执行shell脚本

    http://blog.csdn.net/lxwxiao/article/details/8513355 也可以指定某个shell文件不需要密码 www-data ALL=(ALL) NOPASSWD ...

  2. java gc

    mark下来 https://plumbr.eu/handbook/what-is-garbage-collection

  3. MGR架构~单写模式架构的搭建

    一 简介 :MGR一直没有时间测试,今天咱们来初步了解搭建一下呗 二 环境: mysql5.7.20  单台机器 启动三实例 三  mysql 搭建: 1 建立相关目录+ mkdir -p /data ...

  4. Androidstudio中jar包重复或jar包里的类重复问题

    https://www.jianshu.com/p/dd5d4fda1df8 http://blog.csdn.net/hqb112233/article/details/51514208

  5. Docker容器命令

    ★根本前提:本地主机有镜像才能创建容器 ⒈docker run [Options] 镜像名称或镜像ID [Command] [Arg...] 用途:利用镜像创建容器实例 Options说明(常用):注 ...

  6. SANS社区邮件情报收集【2018-12-4到2019-1-19】

    情报来源:注册SANS社区帐号,它提示是否接收邮件咨询等信息,肯定要接收.耳朵听不到东西,天才都变成傻子. 信息点:1.全世界安全员使用它,有培训和免费资源.2.可选择性接收特别网络安全课程,峰会和事 ...

  7. MongoDB的基本概念

    MongoDB的基本概念 库 db就是数据库 文档就是数据表的行 集合就是数据表,这个没有模式,啥叫没有模式呢,就是没有列的定义,随便什么属性都行,这点就比关系行数据库牛逼10000000倍,逆天了.

  8. C++学习5-面向对象编程基础(构造函数、转换构造、静态数据成员、静态成员函数、友元)

    知识点学习 类 const作用 C语言的const限定符的含义为"一个不能改变值的变量",C++的const限定符的含义为"一个有类型描述的常量": const ...

  9. windows上python上传下载文件到linux服务器指定路径【转】

    从windows上传文件到linux,目录下的文件夹自动创建 #!/usr/bin/env python # coding: utf-8 import paramiko import datetime ...

  10. 关于windows2008r2系统80端口被system进程占用的问题

    80端口被system占用的问题   今天启动tomcat的时候发现无法启动80端口被占用 通过netstat -ano查看,发现被pid=4的进程占用 检查进程发现是system进程pid=4给占用 ...