python 对图片进行操作

devtools/2024/9/23 4:49:29/

Pillow是一个强大的图像处理库,它提供了许多用于打开、操作和保存图像的功能。
Image模块:
Image模块提供了用于打开、创建、编辑和保存图像的基本功能。可以使用Image.open()函数来打开图像文件,或者使用Image.new()函数来创建新的图像,还可以对图像进行各种操作,如缩放、裁剪、旋转、调整亮度、对比度等。
ImageDraw模块:
ImageDraw模块提供了一组用于在图像上绘制图形和文本的函数,可以使用ImageDraw对象来绘制线条、矩形、椭圆、多边形,甚至文本。这对于在图像上添加注释、标记或创建自定义图形非常有用。

示例一:获取图片中某个坐标的位置并在图片上画一个长宽5px的方形。
代码实现

from PIL import Image, ImageDraw# 打开图片并确保它在RGB模式下
image_path = 'C:/Users/admin/Desktop/1.png'  # 替换为你的图片路径
image = Image.open(image_path).convert('RGB')# 设定要绘制正方形的起始位置 (x, y)
x, y = 214, 108  # 替换为你想要绘制正方形的起始像素位置# 正方形的边长
side_length = 5# 创建一个可以在图像上绘制的对象
draw = ImageDraw.Draw(image)# 计算正方形的四个角点的坐标
top_left = (x, y)
top_right = (x + side_length, y)
bottom_right = (x + side_length, y + side_length)
bottom_left = (x, y + side_length)# 使用矩形方法绘制正方形(实际上是一个矩形,但边长相等所以看起来是正方形)
# fill参数设置为红色 (255, 0, 0)
draw.rectangle([top_left, bottom_right], fill=(255, 0, 0))
# 保存修改后的图片
new_image_path = 'modified_image.jpg'  # 替换为你想要保存的图片路径
image.save(new_image_path)

原图片:
在这里插入图片描述
效果图:
在这里插入图片描述
示例二:对图片进行裁剪
实现代码:

# 打开图片并确保它在RGB模式下
image_path = 'C:/Users/admin/Desktop/1.png'  # 替换为你的图片路径
image = Image.open(image_path).convert('RGB')# 从图片的下半部分裁剪40px
crop_height = 40  # 裁剪的高度
height = image.height
new_height = height - crop_height  # 新的高度# 裁剪图片
cropped_image = image.crop((0, 0, image.width, new_height))# 保存修改后的图片
new_image_path = 'modified_image_cropped.jpg'  # 替换为你想要保存的图片路径
cropped_image.save(new_image_path)
image = Image.open(new_image_path).convert('RGB')

原图片:
在这里插入图片描述
效果图:
在这里插入图片描述


http://www.ppmy.cn/devtools/8636.html

相关文章

Spring AOP (一)

本篇主要介绍Spring AOP的基础概念和入门使用 一、AOP的基本概念 AOP是一种面向切面编程的思想,它与IOC并称为Spring 的两大核心思想。什么是面向切面编程呢,具体来说就是对一类事情进行集中统一处理。这听起来像不像前面篇章中所介绍的统一功能处理&am…

如何在PostgreSQL中使用CTE(公共表表达式)来简化复杂的查询逻辑?

文章目录 解决方案步骤示例代码 结论 在处理复杂的SQL查询时,我们经常会遇到需要多次引用子查询或中间结果的情况。这可能会使得查询变得冗长且难以理解。为了解决这个问题,PostgreSQL(以及其他一些SQL数据库系统)引入了公共表表达…

电子元器件分类和结构组件分类

0 Preface/Foreword 1 电子元器件分类 具体类型如下,只是描述了常用类型: capacitor,电容器resistor,电阻器transformer,变压器Diode,二极管Transistor,三极管IC,芯片Display&…

论文笔记--Llama3 report

论文笔记--Llama3 report 1. 文章简介2. 性能升级3. 模型升级3.1 模型架构升级3.2 数据升级3.3 指令微调 4. 原文传送门6. References 1. 文章简介 标题:Llama3 Report作者:Meta日期:2024.04 2. 性能升级 Llama3系列本次开源了8B和70B模型&…

【NLP练习】调用Gensim库训练Word2Vec模型

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、准备工作 1.安装Gensim库 使用pip安装: !pip install gensim2. 对原始语料分词 选择《人民的民义》的小说原文作为语料,先采用…

国产台灯哪个品牌比较好?五款国产护眼台灯品牌推荐

随着学生们重返校园,家长和孩子们忙于新学期的准备工作,眼睛健康的考量自然也在其中。这也是为何近年来护眼台灯越来越受到欢迎的原因之一。国产台灯哪个品牌比较好?作为一个长期近视并且日常用眼时间较长的人,我本人对护眼台灯有…

备战面试K8S

备战面试&&K8S Kubernetes关于DockerDocker的优缺点分析 WebAssemblyWebAssembly与Container比较 CtrCrictlCtr和CriCtl的区别 Pod生命周期PodConditions容器状态Pod容器组成生命周期的流程 Kubelet EFK日志采集工具的优缺点 Kubernetes 容器运行接口 Container Runti…

java的单元测试和反射

单元测试 就是针对最小的功能单元,编写测试代码对其进行正确性测试 Junit单元测试框架: 可以用来对方法进行测试 有点: 可以灵活的编写测试代码,可以针对某个方法进行测试,也支持一键完成对全部方法的自动发测试&a…