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文件和目录操作方法大全(含实例)
Mar 12 Python
python基础教程之循环介绍
Aug 29 Python
Python浅拷贝与深拷贝用法实例
May 09 Python
python正则表达式的使用
Jun 12 Python
浅谈用VSCode写python的正确姿势
Dec 16 Python
python中join()方法介绍
Oct 11 Python
python批量识别图片指定区域文字内容
Apr 30 Python
python实现桌面托盘气泡提示
Jul 29 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
Aug 24 Python
Pytorch 实现权重初始化
Dec 31 Python
Python 如何创建一个简单的REST接口
Jul 30 Python
Python数据分析之pandas读取数据
Jun 02 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/12/10 PHP
jQuery 表格插件整理
2010/04/27 Javascript
javascript获得服务器端控件的ID的实现代码
2011/12/28 Javascript
Asp.Net alert弹出提示信息的几种方法总结
2014/01/29 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
学JavaScript七大注意事项【必看】
2016/05/04 Javascript
jQuery简单实现iframe的高度根据页面内容自适应的方法
2016/08/01 Javascript
Angular2入门教程之模块和组件详解
2017/05/28 Javascript
认识jQuery的Promise的具体使用方法
2017/10/10 jQuery
Mac中安装nvm的教程分享
2017/12/11 Javascript
bootstrap fileinput插件实现预览上传照片功能
2018/01/23 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
vue使用v-for实现hover点击效果
2018/09/29 Javascript
js实现3D照片墙效果
2019/10/28 Javascript
原生js实现贪食蛇小游戏的思路详解
2019/11/26 Javascript
小程序实现列表展开收起效果
2020/07/29 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
[04:23]DOTA2上海特锦赛小组赛第一日 TOP10精彩集锦
2016/02/27 DOTA
解决pycharm安装后代码区不能编辑的问题
2018/10/28 Python
详解Python中的测试工具
2019/06/09 Python
Python split() 函数拆分字符串将字符串转化为列的方法
2019/07/16 Python
如何爬取通过ajax加载数据的网站
2019/08/15 Python
Python getsizeof()和getsize()区分详解
2020/11/20 Python
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
Coach澳大利亚官方网站:美国著名时尚奢侈品牌
2017/05/24 全球购物
JACK & JONES英国官方网站:欧洲领先的男装生产商
2017/09/27 全球购物
英国护发和美妆在线商店:Klip Shop
2019/03/24 全球购物
授权委托书怎么写
2014/04/03 职场文书
建议书范文
2015/02/05 职场文书
幼儿园教师节活动总结
2015/03/23 职场文书
2015年安全教育月活动总结
2015/03/26 职场文书
消防安全主题班会
2015/08/12 职场文书
评奖评优个人先进事迹材料
2015/11/04 职场文书
2019年亲子运动会口号
2019/10/11 职场文书
laravel ajax curd 搜索登录判断功能的实现
2021/04/17 PHP
基于Redis过期事件实现订单超时取消
2021/05/08 Redis