如何用python裁剪图片
如何使用python裁剪图片

如上图所示,这是一张包含了各类象棋棋子的图片。我们需要将其中每一个棋子都裁剪出来,此时可以利用python的 PIL库 实现。
一、 安装PIL库
如果此前没有安装过PIL库,在python3环境下,命令行输入 pip install pillow 即可安装完成。
二、构建思路
我们尝试一下,将左上角黑色的将剪切下来并保存图片。

首先要打开画图,放大再放大,再勾选网格线,找到将这个棋子的左上角坐标和右上角坐标。可以看到右下角的坐标大约是(50,50)。左上角是(0,0)。因为所有图片的坐标的初始点都在左上角。
from PIL import Image
img = Image.open('chess.png') ## 打开chess.png文件,并赋值给img
region = img.crop((0,0,50,50))## x1,y1表示要裁剪的位置的左上角坐标,x2,y2表示右下角。
region.save('举例.png') ## 将裁剪下来的图片保存到 举例.png

可以看到是裁剪成功了,需要注意的是,我们要将每一个棋子都裁剪下来,难道要一个一个地看坐标、修改程序中的坐标,然后一遍一遍地运行程序去裁剪图片吗?那不如直接用画图裁剪可能还快一点。我们再思考一下,会发现每一个棋子间的间隔是有规律的,那我们可不可以尝试用for循环去实现批量地裁剪呢?
三、完整代码
再次打开画图,可以发现规律。第一排黑色子左上角的的坐标是(0,0),x坐标每次加50,加七次,所以是(0,0)-(300,0);右下角同理可得(50,0)-(350,0);第二排则是(0,50)-(300,50)和(50,100)-(350,100)。明白了规律之后,直接开始敲代码
from PIL import Image
chessred = ['jj','ss','xx','mm','cc','pp','bb'] ##红棋命名,随便起的,不要相同就行
chessblack = ['j','s','x','m','c','p','b'] ##黑棋命名,随便起的,不要相同就行
img = Image.open('./chess.png') ## 打开chess.png,并赋值给img
def cropimg():
for i,j,z in zip(range(0,350,50),chessblack,chessred):
region = img.crop((i,0,i+50,50))## 裁剪第一排黑棋棋子
region.save(f'./test/{j}.png')## 保存第一排黑棋棋子
region = img.crop((i,50,i+50,100))## 裁剪第二排红棋棋子
region.save(f'./test/{z}.png')## 保存第二排红棋棋子
cropimg()

打开文件夹,所有裁剪后的图片已经被保存。
如何用python裁剪图片的更多相关文章
- .mat转成.npy文件+Python(Pytorch)压缩裁剪图片
需求:现有数据文件V1.mat,里面包含多个数据集,现需将里面的images数据集提取出来,然后进行压缩裁剪成指定大小 V1.mat数据集目录: 1.从mat文件中提取数据(使用Python) V1. ...
- 使用Python PIL库中的Image.thumbnail函数裁剪图片
今天,是我来到博客园的第五天,发现自己还没有头像,想着上传ubuntu系统中我很喜欢的一个背景图片来当头像,但是因为图片过大,上传失败了.那么,我们如何使用python中强大的PIL库来进行图片裁剪呢 ...
- Python批量自动裁剪图片
"""用Pythonp批量裁剪图片""" from PIL import Image import matplotlib.pyplot as ...
- python裁剪base64编码的图片
简介 今天遇到需要裁剪base64字符串的PNG图片,并返回base64格式字符串的任务,捣鼓半天. 裁剪代码如下: def deal_inspect_img(base64_str): "& ...
- python批量裁剪图片
"""用Pythonp批量裁剪图片""" from PIL import Imageimport matplotlib.pyplot as ...
- python接收图片变成缩略图
python图像处理库:Pillow初级教程 Image类 Pillow中最重要的类就是Image,该类存在于同名的模块中.可以通过以下几种方式实例化:从文件中读取图片,处理其他图片得到,或者直接创建 ...
- 如何用python下载一张图片
如何用python下载一张图片 这里要用到的主要工具是requests这个工具,需要先安装这个库才能使用,该库衍生自urllib这个库,但是要比它更好用.多数人在做爬虫的时候选择它,是个不错的选择. ...
- 如何用python“优雅的”调用有道翻译?
前言 其实在以前就盯上有道翻译了的,但是由于时间问题一直没有研究(我的骚操作还在后面,记得关注),本文主要讲解如何用python调用有道翻译,讲解这个爬虫与有道翻译的js“斗争”的过程! 当然,本文仅 ...
- 如何用Python从海量文本抽取主题?
摘自https://www.jianshu.com/p/fdde9fc03f94 你在工作.学习中是否曾因信息过载叫苦不迭?有一种方法能够替你读海量文章,并将不同的主题和对应的关键词抽取出来,让你谈笑 ...
随机推荐
- 用 Python 简单生成 WAV 波形声音文件
Python 简单生成 WAV 波形声音文件 让机器发出声响,本身就是一件充满魔法的事情.有没有想过,用一段简单的代码,生成一个最简单的声音呢?Python 这门脚本语言的库十分丰富,借助于其中的三个 ...
- Spring高级特性之三:@Enable*注解的工作原理
Spring Boot中阐述热插拔技术的时候,简单地提及@Enable*注解.随着多种框架的应用及深入了解,@Enable*这个注解在各种框架中应用相当普及. 那么@Enable*注解工作原理是怎么样 ...
- 基于mysql的报表工具有哪些?值得推荐的mysql报表工具
什么是SQL?SQL是结构化查询语言. 什么是数据库?数据库是用来存储数据的. 什么是mysql?Mysql是目前较为流行的数据库. 基于mysql的报表工具有哪些? 其实现在所有的报表工具,基本都支 ...
- 【Windows 操作系统】 内核对象|句柄
内核对象简介 内核对象就是 一些数据结构该结构用来描述存储内核中的一个内存块中的数据信息. 内存块是一种数据结构,其中的数据成员负责维护该对象的相应信息,这个数据结构以及其中的数据成员只能由内核访 ...
- 【C#表达式树 四】Expression类上的函数列表
Expression相当于工厂,这个工厂有各式各样的模型(函数),用来生成各种零部件(节点类型),最后组装成表达式树. Expressions这个命名空间有各种个容器用陈放生产出来的零部件. Expr ...
- C#特性(属性)Attribute
先明确一个概念: 元数据..NET中元数据是指程序集中的命名空间.类.方法.属性等信息.这些信息是可以通过Reflection读取出来的. 再来看个例子: #define BUG //#define ...
- Hive复杂数组字典(Json-Array)解析
数据存储字段格式如下(Json-Array互相嵌套): string='{"id":"9088848902695992720","title" ...
- Weblogic 升级更新补丁操作步骤
转至:https://blog.csdn.net/allway2/article/details/91424413 Weblogic 升级更新补丁操作步骤: 1.上传补丁包2.kill weblogi ...
- centos7 下搭建 hfish 2.1.0
HFish是一款基于 Golang 开发的跨平台多功能主动攻击型蜜罐网络钓鱼平台框架系统,为了企业安全防护测试做出了精心的打造 HFish 开发的官网:https://hfish.io HFish地址 ...
- 小程序根据ID跳转到不同的分页
想实现效果: 点击后跳转 wxml: <view class="fiveson"> <view class="fiveson-son&q ...