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中处理字符串之isalpha()方法的使用
May 18 Python
在python的类中动态添加属性与生成对象
Sep 17 Python
浅谈Python使用Bottle来提供一个简单的web服务
Dec 27 Python
Python基于socket模块实现UDP通信功能示例
Apr 10 Python
python paramiko利用sftp上传目录到远程的实例
Jan 03 Python
解决pycharm回车之后不能换行或不能缩进的问题
Jan 16 Python
Django中celery执行任务结果的保存方法
Jul 12 Python
python数据处理之如何选取csv文件中某几行的数据
Sep 02 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
Dec 04 Python
pytorch+lstm实现的pos示例
Jan 14 Python
Django后台管理系统的图文使用教学
Jan 20 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不允许用户提交空表单(php空值判断)
2013/11/12 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
php和js实现根据子网掩码和ip计算子网功能示例
2019/11/09 PHP
js函数般调用正则
2008/04/08 Javascript
从JavaScript 到 JQuery (1)学习小结
2009/02/12 Javascript
只需20行代码就可以写出CSS覆盖率测试脚本
2013/04/24 Javascript
div失去焦点事件实现思路
2014/04/22 Javascript
JavaScript插件化开发教程 (三)
2015/01/27 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
vue移动端使用canvas签名的实现
2020/01/15 Javascript
JavaScript文档加载模式以及元素获取
2020/07/28 Javascript
Vue+Java+Base64实现条码解析的示例
2020/09/23 Javascript
JavaScript点击按钮生成4位随机验证码
2021/01/28 Javascript
[01:02:02]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第二局
2016/02/25 DOTA
浅谈python装饰器探究与参数的领取
2017/12/01 Python
对Django外键关系的描述
2019/07/26 Python
django 基于中间件实现限制ip频繁访问过程详解
2019/07/30 Python
Pandas0.25来了千万别错过这10大好用的新功能
2019/08/07 Python
Python 日期区间处理 (本周本月上周上月...)
2019/08/08 Python
python实现加密的方式总结
2020/01/19 Python
Python pip安装模块提示错误解决方案
2020/05/22 Python
python Paramiko使用示例
2020/09/21 Python
python中append函数用法讲解
2020/12/11 Python
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
2016/01/20 HTML / CSS
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
出纳岗位职责模板
2013/11/27 职场文书
个人社会实践自我鉴定
2014/03/24 职场文书
招股说明书范本
2014/05/06 职场文书
求职导师推荐信范文
2015/03/27 职场文书
和谐拯救危机观后感
2015/06/15 职场文书
2016大学迎新欢迎词
2015/09/29 职场文书
2016个人先进事迹材料范文
2016/03/01 职场文书
win10此电脑打不开怎么办 win10双击此电脑无响应的解决办法
2022/07/23 数码科技