python实现将文件夹内的每张图片批量分割成多张
作者:蹦跶的小羊羔 发布时间:2023-07-18 17:13:12
标签:python,图片分割
一、说在前面
需求:有一张长为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)
三、写在后面
这里定义了切割行数和列数:
如果需要将图片更改尺寸,可以简单的使用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")
来源:https://blog.csdn.net/yql_617540298/article/details/82024897


猜你喜欢
- 讲解我们的爬虫之前,先概述关于爬虫的简单概念(毕竟是零基础教程)爬虫网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收
- 这是asp利用dictionary创建二维数组的例子,这样做的优点是:1、数组下标可以是字符串2、长度不是固定的<'% ’==
- 在处理numpy数组,有这个需求,故写下此文:使用np.argwhere和np.all来查找索引。要使用np.delete删除它们。示例1i
- 可以用JS来监控播放器的事件,如果播放完毕了,就用Js跳转到下一集的播放页面, 这样就可以间接实现连续播放了 PlayStateChange
- 本文实例讲述了Python实现查找两个字典相同点的方法。分享给大家供大家参考,具体如下:问题:寻找两个字典中间相同的地方(相同的键、相同的值
- 遇到这样一个需求,有一张表,要给这张表新增一个字段delta,delta的值等于每行的c1列的值减去上一行c1列的值。我的解决方案,可以通过
- 本文实例讲述了Python面向对象程序设计OOP。分享给大家供大家参考,具体如下:类是Python所提供的最有用的的工具之一。合理使用时,类
- 1.函数array()功能:创建一个数组变量格式:array(list)参数:list为数组变量中的每个数值列,中间用逗号间隔例子:<
- 本文实例讲述了python实现修改固定模式的字符串内容操作。分享给大家供大家参考,具体如下:说明字符串模式是开头可能有空格,之后可能存在多个
- 最新的支持IE、firefox、chrome有提示信息的代码:<script type="text/javascript&q
- mybatis-plus使用时候的小问题记录。在使用mybatis-plus的时候需要把sql的语句打印出来,查看执行的成功与否,在以前的项
- 抓取“xmly”鬼故事音频import json # 在这个url,音频链接为JSON动态生成,所以用到了json模块impor
- 10线程同时操作,频繁出现插入同样数据的问题。虽然在插入数据的时候使用了: insert inti tablename(fields....
- 一、简介本章内容主要通过具体的简单示例来分析Vue3是如何实现响应式的。理解本章需要了解Vue3的响应式对象。只注重原理设计层面,细节不做太
- 一、 Axios 的封装在 Vue 项目中,和后台进行数据交互是频繁且不可或缺的,刚开始没进行 Axios 封装的时候,每次请求后台数据都是
- 原则一:注意WHERE子句中的连接顺序: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE
- 概述备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的
- Pandas是一个强大的数据处理库,它提供了高性能、易于使用的数据结构和数据分析工具。本文将介绍Pandas常用的数据结构和常用的数据分析技
- 之前有个程序,里面有个时间部分是按照国内时区,也就是东八区,来写的,程序中定义了北京时间2点到八点进行检查;后面程序在国外机器上,例如说韩国
- 先准备好软件:一、安装Apache,配置成功一个普通网站服务器 运行下载好的“apache_2.0.55-win32-x86-no_ssl.