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 相关文章推荐
高性能web服务器框架Tornado简单实现restful接口及开发实例
Jul 16 Python
Python中shutil模块的常用文件操作函数用法示例
Jul 05 Python
纯python实现机器学习之kNN算法示例
Mar 01 Python
Python OpenCV对本地视频文件进行分帧保存的实例
Jan 08 Python
python中的列表与元组的使用
Aug 08 Python
python常用数据重复项处理方法
Nov 22 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
Mar 11 Python
Python迭代器Iterable判断方法解析
Mar 16 Python
使用django自带的user做外键的方法
Nov 30 Python
pycharm配置QtDesigner的超详细方法
Jan 25 Python
python 使用openpyxl读取excel数据
Feb 18 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
Mar 03 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+ajax 无刷新删除数据
2010/02/20 PHP
解析wamp5下虚拟机配置文档
2013/06/27 PHP
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
thinkPHP3.2简单实现文件上传的方法
2016/05/16 PHP
php mysql实现mysql_select_db选择数据库
2016/12/30 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
Extjs EditorGridPanel中ComboBox列的显示问题
2011/07/04 Javascript
基于jquery实现的文字淡入淡出效果
2013/11/14 Javascript
生成二维码方法汇总
2014/12/26 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
详解JavaScript中循环控制语句的用法
2015/06/03 Javascript
JavaScript使用RegExp进行正则匹配的方法
2015/07/11 Javascript
JQuery导航菜单选择特效
2016/04/11 Javascript
图文详解Heap Sort堆排序算法及JavaScript的代码实现
2016/05/04 Javascript
jQuery+Ajax请求本地数据加载商品列表页并跳转详情页的实现方法
2017/07/12 jQuery
JavaScript实现的前端AES加密解密功能【基于CryptoJS】
2018/08/28 Javascript
VSCode使用之Vue工程配置eslint
2019/04/30 Javascript
Vue自定义组件双向绑定实现原理及方法详解
2020/09/03 Javascript
python多线程操作实例
2014/11/21 Python
python计算方程式根的方法
2015/05/07 Python
Python+django实现文件下载
2016/01/17 Python
python日志logging模块使用方法分析
2019/05/23 Python
Python实现RGB与HSI颜色空间的互换方式
2019/11/27 Python
解决Tensorflow sess.run导致的内存溢出问题
2020/02/05 Python
HTML5的hidden属性兼容老浏览器的方法
2014/04/23 HTML / CSS
户外拓展活动方案
2014/02/11 职场文书
食堂采购员岗位职责
2014/03/17 职场文书
大学生社团活动总结
2014/04/26 职场文书
职工小家建设活动方案
2014/08/25 职场文书
乔迁之喜答谢词
2015/01/05 职场文书
钱塘江大潮导游词
2015/02/03 职场文书
惊涛骇浪观后感
2015/06/05 职场文书
OpenCV图像变换之傅里叶变换的一些应用
2021/07/26 Python
详解Flutter网络请求Dio库的使用及封装
2022/04/14 Java/Android
golang生成并解析JSON
2022/04/14 Golang