python使用PIL剪切和拼接图片


Posted in Python onMarch 23, 2020

本文实例为大家分享了python使用PIL剪切图片和拼接图片的具体代码,供大家参考,具体内容如下

因工作需要,接触到了PIL这个包,看其他人的博客踩了一些坑,有些博客并没有注明各个位置参数的含义,今天我就将他补全

切图

1.首先先下载一张图片,我使用的是1200*1200像素的图片,将它放置在G盘的img目录下

python使用PIL剪切和拼接图片

2.  我将这张图片切成四等分,我新建了两个文件,分别是img1、img2,用来存放图片

python使用PIL剪切和拼接图片

3. 代码

from PIL import Image
img = Image.open('G:/img/1.jpg')
print('图片的大小为: {}'.format(img.size))
print('将图片切分成等四份,4张 600 X 600 的图片')
size = 600 #图片大小都为600,所以只设置一个变量
left = 0 #图片距离左边的宽度乘积值
shang = 0 #图片距离上边的宽度乘积值
index = 0 #图片名
for i in range(4):
 if i == 2:
 # 当循环到第三个值时,需要切第二行的图片
 shang += 1
 left = 0
 a = size * left # 图片距离左边的大小
 b = size * shang # 图片距离上边的大小
 c = size * (left + 1) # 图片距离左边的大小 + 图片自身宽度
 d = size * (shang + 1) # 图片距离上边的大小 + 图片自身高度
 print('a= {},b= {},c= {}, d= {}'.format(a,b,c,d))
 croping = img.crop((a,b,c,d))
 croping.save('G:/img/img1/'+ str(index) + '.jpg')
 index += 1
 left += 1

看下运行结果:

python使用PIL剪切和拼接图片

看下文件,这样就将这张图片切分后存到img1这个目录中去了

python使用PIL剪切和拼接图片

点开目录看下,是我们要的效果

python使用PIL剪切和拼接图片

二、拼接

1.在切分后的图片基础上拼接,将图片存入img2这个文件夹中去

代码:

from PIL import Image
 
imgname = 0
def pingjie(imgs):
 print('------------pingjie-------------')
 target = Image.new('RGB', (size * 2, size * 1)) #拼接前需要写拼接完成后的图片大小 1200*600
 for i in range(len(imgs)):
 a = size * i  # 图片距离左边的大小
 b = 0  # 图片距离上边的大小
 c = size * (i + 1) # 图片距离左边的大小 + 图片自身宽度
 d = size  # 图片距离上边的大小 + 图片自身高度
 target.paste(imgs[i], (a, b, c, d))
 global imgname
 print('拼接图片的路径为:',path1 + str(imgname) + '.jpg')
 target.save(path1 + str(imgname) + '.jpg')
 imgname += 1
 
def pj():
 print('------------pj-------------')
 #取1,3是因为每行拼接完整都是最后那个,第一行是0,1命名,第二行是2,3命名,所以取后面那个值
 imglist = [1,3]
 img = []
 for i in imglist:
 print('完整行的拼接路径为:'+ path1 + str(i) + '.jpg')
 img.append(Image.open(path1 + str(i) + '.jpg'))
 target = Image.new('RGB', (size * 2, size * 2)) #拼接前需要写拼接完成后的图片大小 1200*1200
 for i in range(len(img)):
 a = 0 # 图片距离左边的大小
 b = size * i # 图片距离上边的大小
 c = size * 2 # 图片距离左边的大小 + 图片自身宽度
 d = size * (i + 1) # 图片距离上边的大小 + 图片自身高度
 target.paste(img[i], (a, b, c, d))
 global imgname
 target.save(path1 + 'pingjie' + '.jpg')
 
if __name__ == '__main__':
 size = 600 #图片的宽高都为600像素
 path = 'G:/img/img1/' # 存放要拼接图片的目录
 path1 = 'G:/img/img2/' # 拼接后图片的存放目录
 index = 0 #图片的名字
 for i in range(2): #有两行,所以需要循环两次
 images = [] #每一次拼接只能一行一行拼接,不能在第一行拼接完后再在其基础上拼接第二行的图片,矩阵不允许这样操作
 for j in range(2): #每行有两张图片,所以也要循环两次
  print(path + str(index) + '.jpg')
  images.append(Image.open(path + str(index) + '.jpg'))
  index += 1
 print('第 {} 行拼接完成'.format(i))
 pingjie(images)
 pj()

看下打印结果:

python使用PIL剪切和拼接图片

看下目录:看到img2中存储了图片

python使用PIL剪切和拼接图片

进入该目录:可以看到拼接成功了

python使用PIL剪切和拼接图片

本文已被收录到专题《python图片处理操作》 ,欢迎大家点击学习更多精彩内容。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python利用beautifulSoup实现爬虫
Sep 29 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
Jul 11 Python
python 删除大文件中的某一行(最有效率的方法)
Aug 19 Python
Python中super函数的用法
Nov 17 Python
Python学习之Anaconda的使用与配置方法
Jan 04 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
May 07 Python
Python输出\u编码将其转换成中文的实例
Dec 15 Python
pandas DataFrame行或列的删除方法的实现示例
Aug 02 Python
python爬虫使用requests发送post请求示例详解
Aug 05 Python
django 获取字段最大值,最新的记录操作
Aug 09 Python
Python SMTP发送电子邮件的示例
Sep 23 Python
python IP地址转整数
Nov 20 Python
python异常处理、自定义异常、断言原理与用法分析
Mar 23 #Python
python实现单张图像拼接与批量图片拼接
Mar 23 #Python
OpenCV Python实现拼图小游戏
Mar 23 #Python
PYcharm 激活方法(推荐)
Mar 23 #Python
利用 PyCharm 实现本地代码和远端的实时同步功能
Mar 23 #Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
Mar 23 #Python
Python常用编译器原理及特点解析
Mar 23 #Python
You might like
PHP设计模式之工厂模式与单例模式
2016/09/28 PHP
javascript 点击整页变灰的效果(可做退出效果)。
2008/01/09 Javascript
javascript 操作文件 实现方法小结
2009/07/02 Javascript
node.js中的fs.fstatSync方法使用说明
2014/12/15 Javascript
javascript获取当前鼠标坐标的方法
2015/01/10 Javascript
JavaScript控制两个列表框listbox左右交换数据的方法
2015/03/18 Javascript
jquery实现的省市区三级联动
2015/04/02 Javascript
jQuery命名空间与闭包用法示例
2017/01/12 Javascript
Angular6封装http请求的步骤详解
2018/08/13 Javascript
基于jQuery ztree实现表格风格的树状结构
2018/08/31 jQuery
用node开发并发布一个cli工具的方法步骤
2019/01/03 Javascript
通过js给网页加上水印背景实例
2019/06/17 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
Python中二维列表如何获取子区域元素的组成
2017/01/19 Python
Python yield与实现方法代码分析
2018/02/06 Python
对python添加模块路径的三种方法总结
2018/10/16 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
使用python对文件中的单词进行提取的方法示例
2018/12/21 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
Python 调用有道翻译接口实现翻译
2020/03/02 Python
django的403/404/500错误自定义页面的配置方式
2020/05/21 Python
css3 iphone玻璃透明气泡完美实现
2013/03/20 HTML / CSS
意大利香水和彩妆护肤品购物网站:Ditano
2017/08/13 全球购物
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
行政助理的岗位职责
2014/02/18 职场文书
校园歌咏比赛主持词
2014/03/18 职场文书
房屋租赁意向书
2014/04/01 职场文书
财务会计大学生自我评价
2014/04/09 职场文书
新闻报道策划方案
2014/06/11 职场文书
党的群众路线教育实践活动自我剖析材料
2014/10/08 职场文书
违反工作规定检讨书范文
2014/12/14 职场文书
基于Redis延迟队列的实现代码
2021/05/13 Redis
OpenCV-Python 实现两张图片自动拼接成全景图
2021/06/11 Python
DQL数据查询语句使用示例
2022/12/24 MySQL