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脚本实现批量网站存活检测遇到问题及解决方法
Oct 11 Python
对pandas写入读取h5文件的方法详解
Dec 28 Python
详解python实现数据归一化处理的方式:(0,1)标准化
Jul 17 Python
python判断自身是否正在运行的方法
Aug 08 Python
Python 变量的创建过程详解
Sep 02 Python
python、Matlab求定积分的实现
Nov 20 Python
Django实现whoosh搜索引擎使用jieba分词
Apr 08 Python
jupyter notebook的安装与使用详解
May 18 Python
python语言是免费还是收费的?
Jun 15 Python
Python爬虫教程之利用正则表达式匹配网页内容
Dec 08 Python
pandas 数据类型转换的实现
Dec 29 Python
python异常中else的实例用法
Jun 15 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
DOTA2游戏同人动画《龙之血》导演接受采访
2021/03/05 欧美动漫
phpmyadmin操作流程
2006/10/09 PHP
php Ajax乱码
2008/04/09 PHP
在PHP中检查PHP文件是否有语法错误的方法
2009/12/23 PHP
ThinkPHP 404页面的设置方法
2015/01/14 PHP
laravel框架数据库配置及操作数据库示例
2019/10/10 PHP
Gird组件 Part-3:范例RSSFeed Viewer
2007/03/10 Javascript
用js实现下载远程文件并保存在本地的脚本
2008/05/06 Javascript
JavaScript 浏览器验证代码(来自discuz)
2010/07/17 Javascript
复制js对象方法(详解)
2013/07/08 Javascript
jquery ajax属性async(同步异步)示例
2013/11/05 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
2014/09/02 Javascript
js事件绑定快捷键以ctrl+k为例
2014/09/30 Javascript
扒一扒JavaScript 预解释
2015/01/28 Javascript
javascript实现label标签跳出循环操作
2016/03/06 Javascript
jquery分隔Url的param方法(推荐)
2016/05/25 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
2016/08/10 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
jquery+css3问卷答题卡翻页动画效果示例
2016/10/26 Javascript
微信小程序 label 组件详解及简单实例
2017/01/10 Javascript
使用Node搭建reactSSR服务端渲染架构
2018/08/30 Javascript
对于防止按钮重复点击的尝试详解
2019/04/22 Javascript
vuejs移动端实现div拖拽移动
2019/07/25 Javascript
详解Element-UI中上传的文件前端处理
2019/08/07 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
2019/12/16 Javascript
javascript实现计算器功能
2020/03/30 Javascript
Shell编程面试题
2016/05/29 面试题
教师自荐信范文
2013/12/09 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
党的群众路线教育实践活动实施方案
2014/10/31 职场文书
学历证明样本
2015/06/16 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书
详解JS WebSocket断开原因和心跳机制
2021/05/07 Javascript
MySQL 如何设计统计数据表
2021/06/15 MySQL
MySQL外键约束(FOREIGN KEY)案例讲解
2021/08/23 MySQL
php实现自动生成验证码的实例讲解
2021/11/17 PHP