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中利用Into包整洁地进行数据迁移的教程
Mar 30 Python
python读取word文档的方法
May 09 Python
Django中对通过测试的用户进行限制访问的方法
Jul 23 Python
基于Python实现通过微信搜索功能查看谁把你删除了
Jan 27 Python
python爬虫入门教程--快速理解HTTP协议(一)
May 25 Python
Python 从列表中取值和取索引的方法
Dec 25 Python
python实现连连看辅助之图像识别延伸
Jul 17 Python
pytorch AvgPool2d函数使用详解
Jan 03 Python
python 将视频 通过视频帧转换成时间实例
Apr 23 Python
Pytorch数据拼接与拆分操作实现图解
Apr 30 Python
用Python将库打包发布到pypi
Apr 13 Python
详解Python+OpenCV绘制灰度直方图
Mar 22 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
AM/FM收音机的安装与调试
2021/03/02 无线电
PHP MemCached 高级缓存应用代码
2010/08/05 PHP
谷歌音乐搜索栏的提示功能php修正代码
2011/05/09 PHP
PHP中extract()函数的妙用分析
2012/07/11 PHP
php缩放gif和png图透明背景变成黑色的解决方法
2014/10/14 PHP
Jquery弹出窗口插件 LeanModal的使用方法
2012/03/10 Javascript
js制作的鼠标悬浮时产生的下拉框效果
2012/10/27 Javascript
基于KMP算法JavaScript的实现方法分析
2013/05/03 Javascript
实用的Jquery选项卡TAB示例代码
2013/08/28 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
jquery操作checkbox示例分享
2014/07/21 Javascript
jquery对象和javascript对象即DOM对象相互转换
2014/08/07 Javascript
js中confirm实现执行操作前弹出确认框的方法
2014/11/01 Javascript
javascript弹出带文字信息的提示框效果
2016/07/19 Javascript
React Native AsyncStorage本地存储工具类
2017/10/24 Javascript
vue项目开发中setTimeout等定时器的管理问题
2018/09/13 Javascript
javascript异步处理与Jquery deferred对象用法总结
2019/06/04 jQuery
vue.js循环radio的实例
2019/11/07 Javascript
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
Python读取指定目录下指定后缀文件并保存为docx
2017/04/23 Python
python如何为被装饰的函数保留元数据
2018/03/21 Python
Python中交换两个元素的实现方法
2018/06/29 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
Python代码块及缓存机制原理详解
2019/12/13 Python
python3检查字典传入函数键是否齐全的实例
2020/06/05 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
2020/06/18 Python
突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述
2013/01/31 HTML / CSS
英国现代家具和照明购物网站:Heal’s
2019/10/30 全球购物
如何判断计算机可能已经中马
2013/03/22 面试题
cf战队收人口号
2014/06/21 职场文书
2015年幼儿园保育员工作总结
2015/04/23 职场文书
校园歌手大赛主持词
2015/07/03 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
python 模拟在天空中放风筝的示例代码
2021/04/21 Python
MySQL8.0升级的踩坑历险记
2021/11/01 MySQL
使用Postman测试需要授权的接口问题
2022/06/21 Java/Android