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的Django中django-userena组件的简单使用教程
May 30 Python
python中使用%与.format格式化文本方法解析
Dec 27 Python
Python 装饰器实现DRY(不重复代码)原则
Mar 05 Python
Python XML转Json之XML2Dict的使用方法
Jan 15 Python
python 实现矩阵上下/左右翻转,转置的示例
Jan 23 Python
Python3.5实现的罗马数字转换成整数功能示例
Feb 25 Python
超简单使用Python换脸实例
Mar 27 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
Jul 11 Python
python自动化unittest yaml使用过程解析
Feb 03 Python
Django模板获取field的verbose_name实例
May 19 Python
Python-split()函数实例用法讲解
Dec 18 Python
python中用Scrapy实现定时爬虫的实例讲解
Jan 18 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+DBM的同学录程序(2)
2006/10/09 PHP
一些常用的php简单命令代码集锦
2007/09/24 PHP
用PHP读取flv文件的播放时间长度
2009/09/03 PHP
使用dump函数,给php加断点测试
2013/06/25 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
2014/12/17 PHP
php中字符串和整数比较的操作方法
2019/06/06 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
javascript实现全角半角检测的方法
2015/07/23 Javascript
学习使用grunt来打包JavaScript和CSS程序的教程
2016/01/04 Javascript
js创建jsonArray传输至后台及后台全面解析
2016/04/11 Javascript
jQuery获取当前点击的对象元素(实现代码)
2016/05/19 Javascript
js canvas实现擦除动画
2016/07/16 Javascript
JavaScript实现简易的天数计算器实例【附demo源码下载】
2017/01/18 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
2017/03/30 Javascript
python实现socket端口重定向示例
2014/02/10 Python
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
Python学习思维导图(必看篇)
2017/06/26 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
2018/01/24 Python
详解Python中的动态属性和特性
2018/04/07 Python
Python Scapy随心所欲研究TCP协议栈
2018/11/20 Python
基于python的BP神经网络及异或实现过程解析
2019/09/30 Python
10分钟理解CSS3 FlexBox弹性布局
2018/12/20 HTML / CSS
html2canvas把div保存图片高清图的方法示例
2018/03/05 HTML / CSS
物流业务员岗位职责
2014/02/08 职场文书
12月红领巾广播稿
2014/02/13 职场文书
村庄环境整治方案
2014/05/15 职场文书
作风建设演讲稿
2014/05/23 职场文书
教师求职信
2014/06/17 职场文书
求职自我推荐信
2014/06/25 职场文书
2014年电信员工工作总结
2014/12/19 职场文书
保安辞职信范文
2015/02/28 职场文书
物业保安辞职信
2015/05/12 职场文书
2016大学生暑期社会实践心得体会
2016/01/14 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
PHP实现创建以太坊钱包转账等功能
2021/04/21 PHP