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 相关文章推荐
Python3实现将文件归档到zip文件及从zip文件中读取数据的方法
May 22 Python
Python中特殊函数集锦
Jul 27 Python
详解Python函数作用域的LEGB顺序
May 14 Python
python中的字典使用分享
Jul 31 Python
python的内存管理和垃圾回收机制详解
May 18 Python
Python Tkinter 简单登录界面的实现
Jun 14 Python
简单了解Django ContentType内置组件
Jul 23 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
Aug 12 Python
python多线程分块读取文件
Aug 29 Python
Python代码执行时间测量模块timeit用法解析
Jul 01 Python
python Zmail模块简介与使用示例
Dec 19 Python
Python机器学习三大件之一numpy
May 10 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入门速成教程
2007/03/19 PHP
比较全的PHP 会话(session 时间设定)使用入门代码
2008/06/05 PHP
PHP Curl多线程原理实例详解
2013/11/06 PHP
PHP 实现公历日期与农历日期的互转换
2017/09/13 PHP
csdn 博客的css样式 v3
2009/02/24 Javascript
javascript下数值型比较难点说明
2010/06/07 Javascript
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
2010/06/19 Javascript
JQuery中关于jquery.js与jquery.min.js的比较探讨
2013/05/15 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
2013/11/25 Javascript
使用时间戳解决ie缓存的问题
2014/08/20 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
Bootstrap3 Grid system原理及应用详解
2016/09/30 Javascript
值得分享的JavaScript实现图片轮播组件
2016/11/21 Javascript
JQuery获取鼠标进入和离开容器的方向
2016/12/29 Javascript
Javascript 实现全屏滚动实例代码
2016/12/31 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
nodejs个人博客开发第一步 准备工作
2017/04/12 NodeJs
原生js实现Flappy Bird小游戏
2018/12/24 Javascript
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
vue设计一个倒计时秒杀的组件详解
2019/04/06 Javascript
vue props 单项数据流实例分享
2020/02/16 Javascript
解决python3中cv2读取中文路径的问题
2018/12/05 Python
python抓取多种类型的页面方法实例
2019/11/20 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
2020/12/16 Python
详解WebSocket跨域问题解决
2018/08/06 HTML / CSS
邮政员工辞职信
2014/01/16 职场文书
师德师风演讲稿
2014/05/05 职场文书
考生诚信考试承诺书
2014/05/23 职场文书
科技工作者先进事迹
2014/08/16 职场文书
2014年人事科工作总结
2014/11/19 职场文书
教师听课评语大全
2014/12/31 职场文书
党员干部廉洁自律承诺书
2015/04/28 职场文书
2016国庆促销广告语
2016/01/28 职场文书
《这片土地是神圣的》教学反思
2016/02/16 职场文书
Python 高级库15 个让新手爱不释手(推荐)
2021/05/15 Python