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 相关文章推荐
Python使用稀疏矩阵节省内存实例
Jun 27 Python
详解Python中用于计算指数的exp()方法
May 14 Python
详解Python如何获取列表(List)的中位数
Aug 12 Python
Tensorflow中使用tfrecord方式读取数据的方法
Jun 19 Python
用Pycharm实现鼠标滚轮控制字体大小的方法
Jan 15 Python
python实现画五角星和螺旋线的示例
Jan 20 Python
Python从函数参数类型引出元组实例分析
May 28 Python
Python多进程入门、分布式进程数据共享实例详解
Jun 03 Python
Django实现网页分页功能
Oct 31 Python
使用python动态生成波形曲线的实现
Dec 04 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
Dec 03 Python
Python词云的正确实现方法实例
May 08 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
一个MYSQL操作类
2006/11/16 PHP
PHP ajax 分页类代码
2008/11/13 PHP
PHP开发中的错误收集,不定期更新。
2011/02/03 PHP
ajax取消挂起请求的处理方法
2013/03/18 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
2017/09/16 PHP
PHP使用PDO抽象层获取查询结果的方法示例
2018/05/10 PHP
jQuery 1.0.4 - New Wave Javascript(js源文件)
2007/01/15 Javascript
javascript  Error 对象 错误处理
2008/05/18 Javascript
web页面数据展示新想法(json)
2010/06/08 Javascript
return false,对阻止事件默认动作的一些测试代码
2010/11/17 Javascript
学习并汇集javascript匿名函数
2010/11/25 Javascript
父子窗体间传递JSON格式的数据的代码
2010/12/25 Javascript
jquery 实现窗口的最大化不论什么情况
2013/09/03 Javascript
关于Javascript作用域链的八点总结
2013/12/06 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
jQuery中replaceAll()方法用法实例
2015/01/16 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
基于JavaScript实现文字超出部分隐藏
2016/02/29 Javascript
Vue实现数字输入框中分割手机号码的示例
2017/10/10 Javascript
angular 未登录状态拦截路由跳转的方法
2018/10/09 Javascript
浅谈vux之x-input使用以及源码解读
2018/11/04 Javascript
vue + element-ui的分页问题实现
2018/12/17 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
2020/05/11 Javascript
Python与R语言的简要对比
2017/11/14 Python
pycharm设置当前工作目录的操作(working directory)
2020/02/14 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
2020/02/25 Python
亚马逊墨西哥站:Amazon.com.mx
2018/08/26 全球购物
期末考试动员演讲稿
2014/01/10 职场文书
初一生物教学反思
2014/01/18 职场文书
劳动竞赛活动方案
2014/02/20 职场文书
网络文明传播志愿者活动方案
2014/08/20 职场文书
2014年司法所工作总结
2014/11/22 职场文书
2015年计算机教师工作总结
2015/07/22 职场文书
Minikube搭建Kubernetes集群
2022/03/31 Servers
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js