python图片处理库Pillow实现简单PS功能
作者:Python 技术 发布时间:2021-08-29 13:51:23
目录
安装
基本操作
打开图像
转换格式
展示图片
剪裁
合并
缩略图
旋转
滤镜
二次创作
画线
文字
总结
文 | 豆豆
来源:Python 技术「ID: pythonall」
在我们的日常生活和工作中有不少场景需要简单处下理图片,很多人都是依赖 PS、美图秀秀等各种图像处理工具,殊不知在你打开软件的一瞬间 Python 就已经将图片处理完了。听起来是不是很神奇,正所谓是 Python 在手,啥也不愁。
安装
老规矩,先通过 pip 安装到本地机器。
pip install Pillow
基本操作
打开图像
可以通过 Image 类来操控图片,比如打开一张图片并获取其基本信息。
from PIL import Image, ImageFilter, ImageEnhance, ImageDraw, ImageFont
img = Image.open('cat.png')
print(F'图片大小为 {img.format}, 格式为 {img.size}, 模式为{img.mode}')
# 图片大小为 JPEG, 格式为 (3458, 3456), 模式为 RGB
转换格式
如果给目标图片转换格式,可以通过 save 函数来实现。
img.save("cat.png ")
之后你就会在同目录下得到一张扩展名为 png 的图片了。
展示图片
直接通过 show
函数来显示图片。
img.show()
剪裁
使用 crop
函数传入一个四元祖坐标来剪裁图片。
point = (1500, 800, 3000, 2300)
img_crop = img.crop(point)
img_crop.show()
合并
通过 paste
函数传入合并的图像和坐标来实现两张图片的合并,那如果要合并多张图片呢,当然是直接调用多次就好了呀。
img.paste(img_crop, (0, 0), None)
img.show(
缩略图
有时候图像过大,这时候就显示出缩略图的必要了,可以通过 thumbnail
函数传入 size 来实现图片的缩小。
thumb_size = (345, 345)
img.thumbnail(thumb_size)
img.show()
旋转
使用 transpose
函数传入旋转角度来实现图片的翻转。
可以传入的参数有以下几种:
Image.ROTATE_90:逆时针旋转 90°
Image.ROTATE_180:逆时针旋转 180°
Image.ROTATE_270:逆时针旋转 270°
Image.FLIP_LEFT_RIGHT:左右翻转
Image.FLIP_TOP_BOTTOM:上下翻转
img_rotate = img.transpose(Image.ROTATE_90)
img_rotate.show()
滤镜
当然,我们还可以对图片做一些滤镜处理。
高斯模糊处理
img_gaussianblur = img.filter(ImageFilter.GaussianBlur(30))
img_gaussianblur.show()
获取照片轮廓
img_contour = img.filter(ImageFilter.CONTOUR)
img_contour.show()
亮度增强
如果照片亮度不够,还可以对照片进行亮度增强。
color = ImageEnhance.Color(img)
img_color = color.enhance(1.5)
img_color.show()
二次创作
当然,如果想对图片进行二次创作,比如添加一些辅助线,文字之类的可以用 ImageDraw 类来完成。
画线
draw = ImageDraw.Draw(img)
draw.line((0, 0) + img.size, fill=20, width=3)
draw.line((0, img.size[1], img.size[0], 0), fill=200, width=3)
img.show()
文字
draw = ImageDraw.Draw(img)
font = ImageFont.truetype('AliPuHui-Bold.ttf', 200)
text = 'This is a cat!'
draw.text((450, 450), text, font=font, fill='pink')
img.show()
当然,如果有多行文字的话,直接加入换行符 \n
即可。
总结
今天派森酱带大家一起通过使用 Pillow 库对图片进行一些简单的操作,事实上 Pillow 库远不止此,将这些简单的操作进行组合甚至可以自创表情包,期待小伙伴们自行发掘更多更好玩的用法呀~
来源:https://blog.csdn.net/weixin_48923393/article/details/121045813


猜你喜欢
- 偶然发现了for…else…这种用法,使用这个实现了break跳出嵌套的for循环In [31]: for i in range(1,5):
- 前言python中有两种循环,while和for,两种循环的区别是,while循环之前,先判断一次,如果满足条件的话,再循环,for循环的时
- 说明:操作系统:Windows Server 2003MySQL版本:5.5.25MySQL程序安装目录:D:\Program Files\
- 字符串转list数组str = '1,2,3'arr = str.split(',')gpu_ids分配na
- 前言VScode是一个相当优秀的IDE,具备开源、跨平台、模块化、插件丰富、启动时间快、颜值高、可高度定制等等优秀的特质,不愧是微软爸爸的私
- Mako是一个高性能的Python模板库,它的语法和API借鉴了很多其他的模板库,如Django、Jinja2等等。基本用法创建模板并渲染它
- 加载静态文件在一个网页中,不仅仅只有一个 html 骨架,还需要 css 样式文件, js 执行文件以及一些图片等。因此在 DTL 中加载静
- 接上篇微信小程序后端搭建:分享:Laravel 微信小程序后端搭建后端搭建好后第一件事就是用户登录认证,简单实现微信小程序登录认证1.use
- (1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值,如 default-character-set = utf8
- python logging模块主要是python提供的通用日志系统,使用的方法其实挺简单的,这块就不多介绍。下面主要会讲到在使用pytho
- 人的大脑通过双眼来辨别视觉图形获取信息。大脑根据储存的经验,将所看到的视觉图形建立起优先级。由此可见,一个良好的视觉设计可以帮助大脑迅速有效
- 我和朋友对此的看法有分歧,我明明记得有不需要返回的时候的?你的看法是对的,例如在表中删除记录。我们来看看下面的例子——在Employee表中
- 在学习了一点 Python 基础之后,我们可以做一个罚点球的小游戏,大概流程是这样:每一轮,你先输入一个方向射门,然后电脑随机判断一个方向扑
- Python 类Python中的类提供了面向对象编程的所有基本功能:类的继承机制允许多个基类,派生类可以覆盖基类中的任何方法,方法中可以调用
- 前言Reids 在 Web 应用的开发中使用非常广泛,几乎所有的后端技术都会有涉及到 Redis 的使用。Redis 种除了常见的字符串 S
- django-admin基本介绍Django 提供了基于 web 的管理工具。Django 自动管理工具是 django.contrib 的
- Flask子域名一般用于数量比较少的子域名,一个模块对应一个子域名。先看下面一个例子:modules.py:from flask impor
- vue提供的了transition组件来实现组件的过渡和路由的过渡,合理使用这个组建可以让我们的页面更加的灵活,提高用户体验。概念在进入/离
- 本文实例讲述了Python实现根据日期获取当天凌晨时间戳的方法。分享给大家供大家参考,具体如下:# -*- coding:utf-8 -*-
- 本文实例讲述了Javascript与PHP验证用户输入URL地址是否正确的方法,分享给大家供大家参考。具体方法如下:1.javascript