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 相关文章推荐
java直接调用python脚本的例子
Feb 16 Python
python统计文本字符串里单词出现频率的方法
May 26 Python
Python fileinput模块使用实例
May 28 Python
基于Django contrib Comments 评论模块(详解)
Dec 08 Python
在python中bool函数的取值方法
Nov 01 Python
pycharm运行程序时在Python console窗口中运行的方法
Dec 03 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
May 06 Python
python:按行读入,排序然后输出的方法
Jul 20 Python
python模块导入的方法
Oct 24 Python
Python tkinter之Bind(绑定事件)的使用示例
Feb 05 Python
使用python实现学生信息管理系统
Feb 25 Python
python控制台打印log输出重复的解决方法
May 14 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
BBS(php & mysql)完整版(二)
2006/10/09 PHP
PHP调用Webservice实例代码
2011/07/29 PHP
ThinkPHP之用户注册登录留言完整实例
2014/07/22 PHP
PHP基于SMTP协议实现邮件发送实例代码
2017/04/27 PHP
PHP高精确度运算BC函数库实例详解
2017/08/15 PHP
php从数据库中获取数据用ajax传送到前台的方法
2018/08/20 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
2019/11/09 PHP
Aster vs Newbee BO3 第三场2.18
2021/03/10 DOTA
js 上传图片预览问题
2010/12/06 Javascript
ExtJS DOM元素操作经验分享
2013/08/28 Javascript
jquery scroll()区分横向纵向滚动条的方法
2014/04/04 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
css如何让浮动元素水平居中
2015/08/07 Javascript
javascript实现图片上传前台页面
2015/08/18 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
bootstrap中使用google prettify让代码高亮的方法
2016/10/21 Javascript
基于Phantomjs生成PDF的实现方法
2016/11/07 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
JS打印彩色菱形的实例代码
2018/08/15 Javascript
vue 实现微信浮标效果
2019/09/01 Javascript
JavaScript中this函数使用实例解析
2020/02/21 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
Python struct.unpack
2008/09/06 Python
python处理中文编码和判断编码示例
2014/02/26 Python
python中defaultdict的用法详解
2017/06/07 Python
Windows环境下python环境安装使用图文教程
2018/03/13 Python
对python mayavi三维绘图的实现详解
2019/01/08 Python
Python使用多进程运行含有任意个参数的函数
2020/05/02 Python
俄罗斯卫浴采暖及维修用品超级市场:Dkrussia
2020/05/12 全球购物
我的求职计划书
2014/01/10 职场文书
课外活动实习计划
2015/01/19 职场文书
原料仓管员岗位职责
2015/04/01 职场文书
宝葫芦的秘密观后感
2015/06/11 职场文书
2015迎新晚会活动总结
2015/07/16 职场文书
谢师宴家长答谢词
2015/09/30 职场文书
JavaScript中document.activeELement焦点元素介绍
2021/11/27 Javascript