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中asyncore的用法实例
Sep 29 Python
python中nan与inf转为特定数字方法示例
May 11 Python
Python简单生成随机姓名的方法示例
Dec 27 Python
python快速建立超简单的web服务器的实现方法
Feb 17 Python
Python单向链表和双向链表原理与用法实例详解
Aug 31 Python
python hough变换检测直线的实现方法
Jul 12 Python
余弦相似性计算及python代码实现过程解析
Sep 18 Python
关于pycharm中pip版本10.0无法使用的解决办法
Oct 10 Python
Python如何使用turtle库绘制图形
Feb 26 Python
Python count函数使用方法实例解析
Mar 23 Python
在脚本中单独使用django的ORM模型详解
Apr 01 Python
python 双循环遍历list 变量判断代码
May 04 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
IE7提供XMLHttpRequest对象为兼容
2007/03/08 Javascript
常用的javascript function代码
2008/05/23 Javascript
javascript基本语法分析说明
2008/06/15 Javascript
jQuery animate easing使用方法图文详解
2016/06/17 Javascript
KnockoutJS 3.X API 第四章之表单submit、enable、disable绑定
2016/10/10 Javascript
Javascript封装id、class与元素选择器方法示例
2017/03/13 Javascript
react-native使用react-navigation进行页面跳转导航的示例
2017/09/07 Javascript
使用apifm-wxapi模块中的问题及解决方法
2019/08/05 Javascript
js 闭包深入理解与实例分析
2020/03/19 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
2020/11/12 Javascript
[51:10]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
flask session组件的使用示例
2018/12/25 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
django使用haystack调用Elasticsearch实现索引搜索
2019/07/24 Python
Python使用GitPython操作Git版本库的方法
2020/02/29 Python
用Python自动清理系统垃圾的实现
2021/01/18 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
html2canvas生成清晰的图片实现打印的示例代码
2019/09/30 HTML / CSS
方太官方网上商城:销售方太抽油烟机、燃气灶、消毒柜等
2017/01/17 全球购物
新加坡最受追捧的体验平台:Hapz
2018/01/01 全球购物
SmartBuyGlasses比利时:购买品牌太阳镜和眼镜
2019/08/09 全球购物
销售类个人求职信范文
2013/09/25 职场文书
会议邀请书范文
2014/02/02 职场文书
我为自己代言广告词
2014/03/18 职场文书
个人委托书怎么写
2014/04/04 职场文书
学生自我评语大全
2014/04/18 职场文书
课前三分钟演讲稿
2014/04/24 职场文书
政协调研汇报材料
2014/08/15 职场文书
小城镇建设汇报材料
2014/08/16 职场文书
销售员态度差检讨书
2014/10/26 职场文书
2014年精神文明建设工作总结
2014/11/19 职场文书
2015建军节87周年演讲稿
2015/03/19 职场文书
工程质量保证书
2015/05/09 职场文书
Python中else的三种使用场景
2021/06/16 Python
Java Spring读取和存储详细操作
2022/08/05 Java/Android