不做过多解释,请自行理解 ,其中CheckPixel方法可以删掉,写这个方法的目的是为了排除透明的块,使得图片资源尽可量的小

# -*- coding: utf-8 -*-
from PIL import Image
import struct
import sys
import osnum = 0def CheckPixel(region):x, y = region.sizeempty_box = Image.new('RGBA', (int(x + 1), int(y + 1)))empty_box.paste(region,(0,0))width, height = empty_box.sizepix_array = empty_box.load()for i in range(width):for j in range(height):tuple = pix_array[i, j]if len(tuple) == 4:if tuple[3] != 0:   # 非透明return Falsereturn True   # 透明def CutImg(imgPath, imgSaveDir, widthNum, heightNum, imgName):global numnum +=1img = Image.open(imgPath)size = img.sizewidth = float(size[0]) / widthNumheight = float(size[1]) / heightNumprint(num, ' Image name: ', imgName, ' (宽,高):',size, ' 切割后 (宽,高): ',(width, height) , '\n')for i in range(widthNum):for j in range(heightNum):box = (width * j, height * i, width * (j + 1), height * (i + 1))region = img.crop(box)if CheckPixel(region):  # 检查是否透明,透明不存储continuenew_i = inew_j = jif i < 10:new_i = '0' + str(i)if j < 10:new_j = '0' + str(j)region.save(imgSaveDir + '\\' + imgName.split('.')[0] + '_{}{}.png'.format(new_i, new_j))def TraverseDir(now_Dir, new_dir, widthNum, heightNum):try:if not os.path.exists(new_dir):os.mkdir(new_dir)for roots, dirs, files in os.walk(now_Dir):# 操作根目录下的图片for imgName in files:if imgName.endswith('png') or imgName.endswith('jpg'):# imgNum = imgName.split('.')[0]imgSaveDir = new_dir  # 仅仅为了展示字段的作用if not os.path.exists(imgSaveDir):os.mkdir(imgSaveDir)imgPath = roots + '\\' + imgNameCutImg(imgPath, imgSaveDir, widthNum, heightNum, imgName)if len(dirs) != 0:for dir in dirs:new_nowDir = now_Dir + '\\' + dirnew_newDir = new_dir + '\\' + dirTraverseDir(new_nowDir, new_newDir, widthNum, heightNum)breakelse:breakexcept IOError:print("执行出错,请退出重新尝试!!!")if __name__ == '__main__':print("start...")print()widthNum, heightNum = map(int, input('请输入要切割的比例,比如3*3,请输入3 3(中间以空格分开): \n\n').split(' '))exedir_root = sys.argv[0][:-11]basedir = sys.argv[1]dirname = basedir.split('\\')[-1]new_dir = exedir_root + '\\' + dirname + '_cut'print('---------------------------------------------------------')print('\n原路径:  ', basedir)print('\n保存路径: ', new_dir, '\n')print('---------------------------------------------------------\n')TraverseDir(basedir, new_dir, widthNum, heightNum)# TraverseDir('C:\\Users\Administrator\Desktop\新建文件夹\\1', 'C:\\Users\Administrator\Desktop\新建文件夹\\1_cut', 3,3)print('\n---------------------------------------------------------\n')print('切割的图片总数为:%d \n' % num)print('已完成!!!')os.system("pause")

python PIL库对图片按比例进行分割相关推荐

  1. python PIL库将图片转换成字符画

    将图片转换成文本文件查看形式 准备 源码 原始图像 生成文本文件后显示的结果 注意事项 准备 语言:python 环境:PIL库,准备好图片素材 源码 from PIL import Image as ...

  2. python自带的PIL库扩展图片大小给图片加上文字描述

    利用python自带的PIL库扩展图片大小给图片加上文字描述.大多都是库函数调用,只是给定图片宽度后计算文字所需行数的代码需要写. 代码比较丑,but it works. #!/usr/bin/env ...

  3. python add picture显示过大_利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例...

    前言 最近的一个项目中需要在图片上添加文字,使用了OpenCV,结果发现利用opencv给图像添加文字有局限.可利用的字体类型比较少,需要安装Freetype扩展,比较复杂.而且不能用putText函 ...

  4. 通过Python的PIL库给图片添加马赛克

    文章目录 前言 一.Pillow是什么? 二.安装PIL库 三.查看PIL库版本 四.使用方法 1.引入库 2.定义图片路径 3.打开需要打马赛克的图片 4.获取图片尺寸 5.创建一个新的图片对象 6 ...

  5. python 用PIL库缩放图片并保存

    python 用PIL库缩放图片并保存 PIL库安装 pip install pillow 单个图片缩放 from PIL import Imageimagepath = r'.\img\number ...

  6. 通过Python的PIL库给图片添加图片水印

    文章目录 前言 一.素材准备 1.原图 2.水印图 二.使用PIL库给图片添加图片水印 1.引入库 2.定义图片路径 3.打开原图 4.打开水印图片 5.计算水印图片大小 6.计算原图大小 7.调整水 ...

  7. 使用Python PIL库实现简单验证码的去噪处理

    想要识别验证码,收集足够多的样本后,首先要做的就是对验证码原始图片进行处理,对验证码识别分类之前,一般包括:将彩色图片转换成灰度图.将灰度图二值化和去除噪点三个基本过程.这里仅以比较简单的验证码为例, ...

  8. python123九宫格输入_使用python PIL库实现简单验证码的去噪方法步骤

    字符型图片验证码识别完整过程及Python实现的博主,我的大部分知识点都是从他那里学来的. 想要识别验证码,收集足够多的样本后,首先要做的就是对验证码原始图片进行处理,对验证码识别分类之前,一般包括: ...

  9. Python - Requests库下载图片

    Python - Requests库下载图片 import requests# 获取网络图片资源 r = requests.get('https://www.baidu.com/img/bd_logo ...

最新文章

  1. 盖尔-沙普利算法_盖尔定律-及其与初创企业的关系
  2. 2021年春季学期-信号与系统-第八次作业参考答案
  3. Python3 中 爬网页 \uxxx 问题
  4. python对象没有属性_Python-对象没有属性E
  5. #求教# 公共less模块中的背景图片地址应该怎么处理?
  6. 中外计算机百科知识,计算机百科知识.doc
  7. DDD理论学习系列(3)-- 限界上下文
  8. HDU 5608 function (杜教筛)
  9. mac懒人版_这些实用的Mac软件你迟早会用到,建议收藏!
  10. 有了JSON.stringify(),处理json将变得更简单!!
  11. 电脑如何测网速_物联网卡的网速到底怎么样呢
  12. maven deploy上传私服出错
  13. 从数组创建ArrayList
  14. 【Spring笔记】Spring创建hello程序
  15. Oracle彻底卸载干净教程
  16. Unity 粒子特效 之 LogoEffect ParticleSystem 文字图片logo粒子特效
  17. 使用OpenCV调整图像的亮度和对比度
  18. 如何做员工满意度调查问卷?
  19. 要实现一台电脑可以上公司内网也可以访问外网
  20. LoadRunner通过SiteScope监控MySQL的性能

热门文章

  1. Unit 1: Packet Sniffing 1.1 Packet Sniffing Introduction to Packet Sniffing
  2. 类型 异常报告 消息 null 描述 服务器遇到一个意外的情况,阻止它完成请求。 例外情况 java.lang.NumberFormatException: null java.base/
  3. AHRS(航姿参考系统)和IMU(惯性测量单元)的区别【转】
  4. 新特性速递 | InnoDB redo log archiving(归档)
  5. 神经网络入门经典书籍,人工神经网络书籍推荐
  6. ruoyi是怎么点击菜单跳转页面的_小猪短租怎么发布房源
  7. zoj 1005 Jugs BFS
  8. 虚拟拨号服务器名称,怎么设置虚拟拨号服务器
  9. 当机械人也开始拥有感情‧谁来定义什么才是人类?
  10. 让AI简单且强大:深度学习引擎OneFlow技术实践