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三元运算符实现方法
Dec 17 Python
详解Python中的正则表达式的用法
Apr 09 Python
探究Python的Tornado框架对子域名和泛域名的支持
May 02 Python
Python Property属性的2种用法
Jun 21 Python
Python MySQL数据库连接池组件pymysqlpool详解
Jul 07 Python
python编辑用户登入界面的实现代码
Jul 16 Python
Django 路由系统URLconf的使用
Oct 11 Python
python判断字符串或者集合是否为空的实例
Jan 23 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
Jun 25 Python
浅谈keras中的目标函数和优化函数MSE用法
Jun 10 Python
Python自动巡检H3C交换机实现过程解析
Aug 14 Python
python缺失值填充方法示例代码
Dec 24 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递归删除指定文件夹的方法小结
2015/04/20 PHP
php实现的美国50个州选择列表实例
2015/04/20 PHP
php查询操作实现投票功能
2016/05/09 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
2019/04/15 PHP
PHP高并发和大流量解决方案整理
2021/03/09 PHP
javascript 必知必会之closure
2009/09/21 Javascript
锋利的jQuery 第三章章节总结的例子
2010/03/23 Javascript
基于jQuery实现点击同时更改两个iframe的网址
2010/07/01 Javascript
分享20款好玩的jQuery游戏
2011/04/17 Javascript
ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)
2012/01/13 Javascript
什么是json和jsonp,jQuery json实例详详细说明
2012/12/11 Javascript
js模仿hover的具体实现代码
2013/12/30 Javascript
Jquery对数组的操作技巧整理
2014/03/25 Javascript
Javascript 数组排序详解
2014/10/22 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
解决OneThink中无法异步提交kindeditor文本框中修改后的内容方法
2017/05/05 Javascript
JS中getElementsByClassName与classList兼容性问题解决方案分析
2019/08/07 Javascript
layer.js之回调销毁对话框的例子
2019/09/11 Javascript
electron踩坑之dialog中的callback解决
2020/10/06 Javascript
Python中实现最小二乘法思路及实现代码
2018/01/04 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
学生信息管理系统python版
2018/10/17 Python
Python opencv实现人眼/人脸识别以及实时打码处理
2019/04/29 Python
python中的数据结构比较
2019/05/13 Python
python爬虫项目设置一个中断重连的程序的实现
2019/07/26 Python
python实现交并比IOU教程
2020/04/16 Python
Python是什么 Python的用处
2020/05/26 Python
keras 简单 lstm实例(基于one-hot编码)
2020/07/02 Python
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
施工质量承诺书范文
2014/05/30 职场文书
经理任命书模板
2014/06/06 职场文书
群众路线教育实践活动整改方案(个人版)
2014/10/25 职场文书
贪污检举信范文
2015/03/02 职场文书
幼儿园开学通知
2015/04/24 职场文书
一条 SQL 语句执行过程
2022/03/17 MySQL