找回密码
 立即注册
搜索
热搜: Excel discuz
查看: 3263|回复: 3

[项目代码] 把图片裁切成两半,分别保存

[复制链接]

482

主题

7万

元宝

75万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
750848
发表于 2021-8-3 14:49:35 | 显示全部楼层 |阅读模式
  1. # python裁剪图片并保存
  2. from PIL  import Image
  3. srcPath = 'F:/002/教练备课本00.png'
  4. dstPath = f'F:/002/1.png'
  5. dstPath1 = f'F:/002/2.png'
  6. # 读取图片
  7. img_1 = Image.open(srcPath)
  8. # 设置裁剪的位置
  9. crop_box = (0,0,img_1.size[0]/2,img_1.size[1])
  10. crop_box1 = (img_1.size[0]/2,0,img_1.size[0],img_1.size[1])
  11. # 裁剪图片
  12. img_2 = img_1.crop(crop_box)
  13. img_21 = img_1.crop(crop_box1)
  14. img_2.save(dstPath)
  15. img_21.save(dstPath1)
复制代码



回复

使用道具 举报

482

主题

7万

元宝

75万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
750848
 楼主| 发表于 2021-8-3 18:29:10 | 显示全部楼层
代码又改了一下,遍历多张图片,裁切完成

  1. import os
  2. from PIL import Image
  3. i = 1
  4. j = 2
  5. url = 'D:\py练习\pic'     #定义图片文件夹
  6. for lujing,liebiao,wenjian in os.walk(url):
  7.     for a in wenjian:
  8.         srcPath = lujing +'\\' +a
  9.         #print(srcPath)
  10.         定义存放裁切后图片路径,这里直接放在源文件夹下,也可以加一层目录
  11.         dstPath = url + '\\'+f'{i}.png'
  12.         dstPath1 = url + '\\'+f'{j}.png'
  13.         # 读取图片
  14.         img_1 = Image.open(srcPath)
  15.         # 设置裁剪的位置
  16.         crop_box = (0,0,img_1.size[0]/2,img_1.size[1])
  17.         crop_box1 = (img_1.size[0]/2,0,img_1.size[0],img_1.size[1])
  18.         i = i + 2
  19.         j = j + 2
  20.         # 裁剪图片
  21.         img_2 = img_1.crop(crop_box)
  22.         img_21 = img_1.crop(crop_box1)
  23.         #保存图片
  24.         img_2.save(dstPath)
  25.         img_21.save(dstPath1)
  26.         print(a,'裁切完成')



复制代码



回复

使用道具 举报

482

主题

7万

元宝

75万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
750848
 楼主| 发表于 2021-8-6 19:47:52 | 显示全部楼层
首先安装pil,我没有安装成功,后来安装了pillow,一次成功
回复

使用道具 举报

482

主题

7万

元宝

75万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
750848
 楼主| 发表于 2022-3-19 18:19:26 | 显示全部楼层
时间长了,还是容易忘,今天补充点儿知识,我直接把人家原文复制过来
pillow模块Image.crop()函数切割图片方法,参数说明
使用Image.crop()方法对图片进行切割。
参数:
  1. Image.crop(left, up, right, below)
复制代码

left:与左边界的距离
up:与上边界的距离
right:还是与左边界的距离
below:还是与上边界的距离
简而言之就是,左上右下。

例子:将一张美女图片切分成9张(3*3)


  1. # -*- coding: utf-8 -*-

  2. from PIL import Image

  3. filename = r'路径\美女.jpg'
  4. img = Image.open(filename)
  5. size = img.size
  6. print(size)

  7. # 准备将图片切割成9张小图片
  8. weight = int(size[0] // 3)
  9. height = int(size[1] // 3)
  10. # 切割后的小图的宽度和高度
  11. print(weight, height)

  12. for j in range(3):
  13.     for i in range(3):
  14.         box = (weight * i, height * j, weight * (i + 1), height * (j + 1))
  15.         region = img.crop(box)
  16.         region.save('{}{}.png'.format(j, i))
复制代码




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|五花八门论坛 ( 豫ICP备15031300号-3 )

GMT+8, 2024-4-19 19:28 , Processed in 0.105580 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表