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 内置函数大全
Nov 23 Python
解决matplotlib库show()方法不显示图片的问题
May 24 Python
python梯度下降法的简单示例
Aug 31 Python
python实现图书借阅系统
Feb 20 Python
Python button选取本地图片并显示的实例
Jun 13 Python
Python创建或生成列表的操作方法
Jun 19 Python
Django之提交表单与前后端交互的方法
Jul 19 Python
浅析Python 引号、注释、字符串
Jul 25 Python
在Python中等距取出一个数组其中n个数的实现方式
Nov 27 Python
Pytorch中的VGG实现修改最后一层FC
Jan 15 Python
基于python requests selenium爬取excel vba过程解析
Aug 12 Python
Python趣味实战之手把手教你实现举牌小人生成器
Jun 07 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
模仿OSO的论坛(一)
2006/10/09 PHP
解析mysql left( right ) join使用on与where筛选的差异
2013/06/18 PHP
php禁止浏览器使用缓存页面的方法
2014/11/07 PHP
php中session与cookie的比较
2015/01/27 PHP
Laravel框架实现的批量删除功能示例
2019/01/16 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
2019/10/13 PHP
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
2013/10/16 Javascript
在Firefox下js select标签点击无法弹出
2014/03/06 Javascript
实用框架(iframe)操作代码
2014/10/23 Javascript
JS实现无限级网页折叠菜单(类似树形菜单)效果代码
2015/09/17 Javascript
jquery实现邮箱自动填充提示功能
2015/11/17 Javascript
结合代码图文讲解JavaScript中的作用域与作用域链
2016/07/05 Javascript
移动端日期插件Mobiscroll.js使用详解
2016/12/19 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
2017/02/10 Javascript
JS对象的深度克隆方法示例
2017/03/16 Javascript
Thinkjs3新手入门之添加一个新的页面
2017/12/06 Javascript
JavaScript去掉数组重复项的方法分析【测试可用】
2018/07/19 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
nodejs中使用archive压缩文件的实现代码
2019/11/26 NodeJs
[54:18]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第一场 1月22日
2021/03/11 DOTA
Python编写的com组件发生R6034错误的原因与解决办法
2013/04/01 Python
python在命令行下使用google翻译(带语音)
2014/01/16 Python
详解Python多线程
2016/11/14 Python
分析Python读取文件时的路径问题
2018/02/11 Python
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
python分批定量读取文件内容,输出到不同文件中的方法
2018/12/08 Python
python里运用私有属性和方法总结
2019/07/08 Python
python lambda表达式在sort函数中的使用详解
2019/08/28 Python
Python面向对象之私有属性和私有方法应用案例分析
2019/12/31 Python
pytorch 图像预处理之减去均值,除以方差的实例
2020/01/02 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
户外用品商店创业计划书
2014/01/29 职场文书
《陈涉世家》教学反思
2014/04/12 职场文书
高一作文之乐趣
2019/11/21 职场文书