python使用PIL剪切和拼接图片

作者:G_scsd 时间:2022-06-26 07:41:55 

本文实例为大家分享了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图片处理操作》 ,欢迎大家点击学习更多精彩内容。

来源:https://blog.csdn.net/Gscsd_T/article/details/83216218

标签:python,剪切,拼接
0
投稿

猜你喜欢

  • 浅谈MySQL中的group by

    2024-01-18 22:53:54
  • Python实现打印九九乘法表的不同方法总结

    2023-05-25 01:05:19
  • SQL Server内存遭遇操作系统进程压榨案例分析

    2024-01-14 06:58:51
  • python被修饰的函数消失问题解决(基于wraps函数)

    2021-07-22 17:32:34
  • python pyaudio音频录制的实现

    2022-03-13 08:44:31
  • PHP使用Face++接口开发微信公众平台人脸识别系统的方法

    2024-06-05 09:40:40
  • python标识符命名规范原理解析

    2023-05-28 04:06:42
  • MySQL存储IP地址的方法

    2024-01-23 06:01:02
  • 用python生成1000个txt文件的方法

    2023-03-24 07:51:11
  • MySQL execute、executeUpdate、executeQuery三者的区别

    2024-01-23 15:32:11
  • Python pathlib模块实例详解

    2023-03-10 10:59:06
  • Eclipse + Python 的安装与配置流程

    2021-07-25 06:34:18
  • 封装 Python 时间处理库创建自己的TimeUtil类示例

    2023-01-15 00:45:56
  • go程序员日常开发效率神器汇总

    2024-02-16 23:04:40
  • Python函数中参数是传递值还是引用详解

    2022-10-13 02:45:18
  • sql 判断数据库,表,存储过程等是否存在的代码

    2024-01-18 21:59:29
  • 为什么定位会被float和clear影响!

    2008-11-10 11:06:00
  • 解决hive中导入text文件遇到的坑

    2023-06-30 16:28:26
  • python 如何调用 dubbo 接口

    2022-09-28 13:20:13
  • python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法

    2021-12-16 16:24:37
  • asp之家 网络编程 m.aspxhome.com