这篇文章将为大家详细讲解有关如何使用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")
关于“如何使用python实现将文件夹内的每张图片批量分割成多张”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。