python实现将文件夹内的每张图片批量分割成多张


Posted in Python onJuly 22, 2019

一、说在前面

       需求:有一张长为960,宽为96的图片,需要将其分割成10张96*96的图片并存放在另外一个文件夹下,通过手工分割耗时且不规范,选择python写一个简单的程序完成。

二、源码

# -*- coding: utf-8 -*-
"""
Created on Thu Aug 23 18:19:09 2018
@author: Administrator
"""
 
import os
from PIL import Image
 
# 切割图片
def splitimage(src, rownum, colnum, dstpath):
 img = Image.open(src)
 w, h = img.size
 if rownum <= h and colnum <= w:
 print('Original image info: %sx%s, %s, %s' % (w, h, img.format, img.mode))
 print('图片切割')
 
 s = os.path.split(src)
 if dstpath == '':
  dstpath = s[0]
 fn = s[1].split('.')
 basename = fn[0]
 ext = fn[-1]
 
 num = 0
 rowheight = h // rownum
 colwidth = w // colnum
 for r in range(rownum):
  for c in range(colnum):
  box = (c * colwidth, r * rowheight, (c + 1) * colwidth, (r + 1) * rowheight)
  img.crop(box).save(os.path.join(dstpath, basename + '_' + str(num) + '.' + ext), ext)
  num = num + 1
 
 print('共生成 %s 张小图片。' % num)
 else:
 print('error')
 
# 创建文件夹
def mkdir(path):
 # 去除首位空格
 path = path.strip()
 # 去除尾部 \ 符号
 path = path.rstrip("\\")
 
 # 判断路径是否存在
 # 存在 True
 # 不存在 False
 isExists = os.path.exists(path)
 
 # 判断结果
 if not isExists:
 os.makedirs(path)
 print (path+' 创建成功')
 return True
 else:
 print (path + ' 目录已存在')
 return False
 
 
folder = r'C:/Users/Administrator/Desktop/testresults' # 存放图片的文件夹
path = os.listdir(folder)
# print(path)
 
for each_bmp in path: # 批量操作
 first_name, second_name = os.path.splitext(each_bmp)
 each_bmp = os.path.join(folder, each_bmp)
 src = each_bmp
 print(src)
 print(first_name)
 # 定义要创建的目录
 mkpath = "C:/Users/Administrator/Desktop/results/"+ first_name
 # 调用函数
 mkdir(mkpath)
 if os.path.isfile(src):
  dstpath = mkpath
  if (dstpath == '') or os.path.exists(dstpath):
  row = int(1) # 切割行数
  col = int(10) # 切割列数
  if row > 0 and col > 0:
   splitimage(src, row, col, dstpath)
  else:
   print('无效的')
  else:
  print('图片保存目录 %s 不存在!' % dstpath)
 else:
  print('图片文件 %s 不存在!' % src)

三、写在后面

这里定义了切割行数和列数:

python实现将文件夹内的每张图片批量分割成多张

如果需要将图片更改尺寸,可以简单的使用PIL库中的resize()函数,代码如下:

from PIL import Image
 
for i in range(1,100):
 img = Image.open("C:/Users/Administrator/Desktop/test_results/"+str(i)+".png")
 img = img.convert("L")
 img = img.resize((960,96))
 
 img.save("C:/Users/Administrator/Desktop/test_results/"+str(i)+".png", "PNG")

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
简单介绍Python2.x版本中的cmp()方法的使用
May 20 Python
Python查询IP地址归属完整代码
Jun 21 Python
简单了解python高阶函数map/reduce
Jun 28 Python
django-crontab 定时执行任务方法的实现
Sep 06 Python
python实现批量文件重命名
Oct 31 Python
python Opencv计算图像相似度过程解析
Dec 03 Python
Python-opencv 双线性插值实例
Jan 17 Python
python从ftp获取文件并下载到本地
Dec 05 Python
Python Numpy之linspace用法说明
Apr 17 Python
教你用python实现一个无界面的小型图书管理系统
May 21 Python
简单谈谈Python面向对象的相关知识
Jun 28 Python
OpenCV项目实践之停车场车位实时检测
Apr 11 Python
使用APScheduler3.0.1 实现定时任务的方法
Jul 22 #Python
Python定时任务APScheduler的实例实例详解
Jul 22 #Python
基于多进程中APScheduler重复运行的解决方法
Jul 22 #Python
django云端留言板实例详解
Jul 22 #Python
python实现图片中文字分割效果
Jul 22 #Python
django用户登录验证的完整示例代码
Jul 21 #Python
Python Threading 线程/互斥锁/死锁/GIL锁
Jul 21 #Python
You might like
PHP 存取 MySQL 数据库的一个例子
2006/10/09 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
2017/03/24 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
php使用curl下载指定大小的文件实例代码
2017/09/30 PHP
Jquery在IE7下无法使用 $.ajax解决方法
2009/11/11 Javascript
javascript与CSS复习(《精通javascript》)
2010/06/29 Javascript
js 返回时间戳所对应的具体时间
2010/07/20 Javascript
jQuery制作仿腾讯web qq用户体验桌面
2013/08/20 Javascript
超简单JS二级、多级联动的简单实例
2014/02/18 Javascript
屏蔽相应键盘按钮操作
2014/03/10 Javascript
JavaScript访问CSS属性的几种方式介绍
2014/07/21 Javascript
基于NodeJS的前后端分离的思考与实践(四)安全问题解决方案
2014/09/26 NodeJs
jQuery EasyUI实现右键菜单变灰不可用效果
2015/09/24 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
Jquery删除css属性的简单方法
2016/12/04 Javascript
利用Vue v-model实现一个自定义的表单组件
2017/04/27 Javascript
微信小程序实现刷脸登录
2018/05/25 Javascript
微信小程序之判断页面滚动方向的示例代码
2018/08/30 Javascript
尝试用最短的Python代码来实现服务器和代理服务器
2016/06/23 Python
Python科学画图代码分享
2017/11/29 Python
Python numpy生成矩阵、串联矩阵代码分享
2017/12/04 Python
PyQt5实现拖放功能
2018/04/25 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
2018/09/03 Python
Python定时发送消息的脚本:每天跟你女朋友说晚安
2018/10/21 Python
对python 自定义协议的方法详解
2019/02/13 Python
Python3.4解释器用法简单示例
2019/03/22 Python
python利用多种方式来统计词频(单词个数)
2019/05/27 Python
详解python tkinter模块安装过程
2020/01/06 Python
Python线程条件变量Condition原理解析
2020/01/20 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
遗体告别仪式答谢词
2014/01/23 职场文书
品质主管岗位职责
2014/03/16 职场文书
销售经理岗位职责范本
2015/04/02 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书