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 相关文章推荐
go和python调用其它程序并得到程序输出
Feb 10 Python
Python扫描IP段查看指定端口是否开放的方法
Jun 09 Python
简单谈谈python中的语句和语法
Aug 10 Python
python进程管理工具supervisor的安装与使用教程
Sep 05 Python
对pyqt5之menu和action的使用详解
Jun 20 Python
python的pytest框架之命令行参数详解(下)
Jun 27 Python
详解python实现数据归一化处理的方式:(0,1)标准化
Jul 17 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
Aug 07 Python
Python filter过滤器原理及实例应用
Aug 18 Python
利用Python的folium包绘制城市道路图的实现示例
Aug 24 Python
用Python远程登陆服务器的步骤
Apr 16 Python
python如何为list实现find方法
May 30 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
微信公众平台开发实现2048游戏的方法
2015/04/15 PHP
PHP中isset与array_key_exists的区别实例分析
2015/06/02 PHP
阿里对象存储OSS在laravel框架中的使用方法
2019/10/13 PHP
提高网站性能之 如何对待JavaScript
2009/10/31 Javascript
jquery的ajax从纯真网(cz88.net)获取IP地址对应地区名
2009/12/02 Javascript
JavaScript 学习笔记(十六) js事件
2010/02/01 Javascript
jQuery 创建Dom元素
2010/05/07 Javascript
使用jQuery同时控制四张图片的伸缩实现代码
2013/04/19 Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
2015/09/05 Javascript
基于insertBefore制作简单的循环插空效果
2015/09/21 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
2015/10/25 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
BootStrap 动态表单效果
2017/06/02 Javascript
详解node-ccap模块生成captcha验证码
2017/07/01 Javascript
express框架实现基于Websocket建立的简易聊天室
2017/08/10 Javascript
nodejs中用npm初始化来创建package.json的实例讲解
2018/10/10 NodeJs
Vue学习之组件用法实例详解
2020/01/06 Javascript
JS中的const命令你真懂它吗
2020/03/08 Javascript
使用js获取身份证年龄的示例代码
2020/12/11 Javascript
python生成随机验证码(中文验证码)示例
2014/04/03 Python
浅析Python中MySQLdb的事务处理功能
2016/09/21 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
Python 合并多个TXT文件并统计词频的实现
2019/08/23 Python
Python 字符串、列表、元组的截取与切片操作示例
2019/09/17 Python
python 实现生成均匀分布的点
2019/12/05 Python
Python3批量创建Crowd用户并分配组
2020/05/20 Python
python mysql中in参数化说明
2020/06/05 Python
html5中为audio标签增加停止按钮动作实现方法
2013/01/04 HTML / CSS
Canvas波浪花环的示例代码
2020/08/21 HTML / CSS
Big Green Smile德国网上商店:提供各种天然产品
2018/05/23 全球购物
总经理助理工作职责
2014/02/06 职场文书
竞争与合作演讲稿
2014/05/12 职场文书
考试诚信承诺书
2014/05/23 职场文书
接收函格式
2015/01/30 职场文书
一年级下册数学教学反思
2016/02/16 职场文书
MySQL 覆盖索引的优点
2021/05/19 MySQL