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爬虫之urllib2中的两个重要概念:Openers和Handlers
Nov 05 Python
python字符串,数值计算
Oct 05 Python
如何用python写一个简单的词法分析器
Dec 18 Python
浅谈Python 列表字典赋值的陷阱
Jan 20 Python
python实现剪切功能
Jan 23 Python
Django 日志配置按日期滚动的方法
Jan 31 Python
Python3实现计算两个数组的交集算法示例
Apr 03 Python
python 列表中[ ]中冒号‘:’的作用
Apr 30 Python
python烟花效果的代码实例
Feb 25 Python
python Plotly绘图工具的简单使用
Mar 03 Python
python文件及目录操作代码汇总
Jul 08 Python
超级实用的8个Python列表技巧
Aug 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中单个数据库字段多列显示(单字段分页、横向输出)
2014/07/28 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
2015/12/21 PHP
php微信开发之图片回复功能
2018/06/14 PHP
关于PHP求解三数之和问题详析
2020/11/09 PHP
基于Jquery的实现回车键Enter切换焦点
2010/09/14 Javascript
JS弹出窗口代码大全(详细整理)
2012/12/21 Javascript
jQuery层次选择器选择元素使用介绍
2013/04/18 Javascript
JS获取网页属性包括宽、高等等
2014/04/03 Javascript
jquery实现类似淘宝星星评分功能实例
2014/09/12 Javascript
js实现input框文字动态变换显示效果
2015/08/19 Javascript
JavaScript测试工具之Karma-Jasmine的安装和使用详解
2015/12/03 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
2016/07/28 Javascript
bootstrap 表单验证使用方法
2017/01/11 Javascript
Vue通过input筛选数据
2020/10/26 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
详解Element 指令clickoutside源码分析
2019/02/15 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
python计算N天之后日期的方法
2015/03/31 Python
python中黄金分割法实现方法
2015/05/06 Python
Python实现的文本简单可逆加密算法示例
2017/05/18 Python
python学习教程之使用py2exe打包
2017/09/24 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
Python对接六大主流数据库(只需三步)
2019/07/31 Python
基于SpringBoot构造器注入循环依赖及解决方式
2020/04/26 Python
意大利网上书店:LaFeltrinelli
2020/06/12 全球购物
社会实践自我鉴定
2013/11/07 职场文书
学校卫生检查制度
2014/02/03 职场文书
个人自我鉴定总结
2014/03/25 职场文书
优秀班主任经验交流材料
2014/06/02 职场文书
祖国在我心中演讲稿200字
2014/08/28 职场文书
班主任高考寄语
2015/02/26 职场文书
大学生青年志愿者活动总结
2015/05/06 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书
Java基础之this关键字的使用
2021/06/30 Java/Android
python可视化之颜色映射详解
2021/09/15 Python