环境需求
Python3.X
Pillow
request
Pillow简介
Pillow 是 Python Imaging Library (PIL) 的一个分支,旨在提供一个更易于使用且功能更强大的图像处理库。Pillow 支持打开、操作和保存多种格式的图片,是 Python 中图像处理的标准库之一。
主要功能
图像打开与保存:
Pillow 可以打开多种格式的图像文件,如 JPEG、PNG、GIF、BMP、TIFF 等。它也支持将图像保存为多种格式。
图像处理:
Pillow 提供了一系列操作,如缩放、剪切、旋转、翻转、调整亮度、对比度、色彩等。
支持对图像进行滤镜和特效操作,例如模糊、锐化、边缘检测等。
图像创建:
可以生成新图像,包括创建空白图像、生成图形和绘制文本。
支持透明度:
支持 RGBA 图像格式,可以处理带有透明度通道的图像。
图像过滤和变换:
可以应用各种过滤器进行图像平滑和增强。
支持几何变换,如旋转、平移和缩放。
图像数量处理:
能够处理多个图像并在内存中进行操作,如 GIF 动画的每一帧
安装 Pillow
pip install Pillow
//conda用以下命令
conda install Pillow基本用法示例
打开和显示图像
from PIL import Image
# 打开图像
image = Image.open('example.jpg')
# 显示图像
image.show()
图像缩放和保存
# 缩放图像
resized_image = image.resize((800, 600))
# 保存缩放后的图像
resized_image.save('resized_example.jpg')
应用滤镜
from PIL import ImageFilter
# 应用模糊滤镜
blurred_image = image.filter(ImageFilter.BLUR)
# 保存模糊后的图像
blurred_image.save('blurred_example.jpg')
绘制文本
from PIL import ImageDraw, ImageFont
# 创建一个空白图像来绘制
new_image = Image.new('RGB', (200, 100), color = (255, 255, 255))
draw = ImageDraw.Draw(new_image)
# 使用默认字体绘制文本
draw.text((10, 10), "Hello, Pillow!", fill=(0, 0, 0))
# 保存绘制后的图像
new_image.save('text_example.jpg')
代码实现
import requests # type: ignore
from PIL import Image # type: ignore
import os
# API 列表
# https://source.unsplash.com/1600x900/?nature,water
# https://api.btstu.cn/sjbz/api.php?lx=dongman&format=images 类型:lx fengjing dongman suiji
class DownLoadImage:
def __init__(self,url):
self.url = url
self.width = 1600
self.height = 900
self.content = 'fengjing'
def getImage(self):
response = requests.get(self.url+'?lx='+self.content+'&format=json/images')
response.encoding = 'utf-8'
if response.status_code == 200:
data = response.content
return data
else:
print('内容获取失败')
def writeImage(self,data,i):
with open(f'{filePath}F{i+1}.jpg','wb') as file:
file.write(data)
def compressImage(self):
for i in os.listdir('image/'):
data = Image.open(f'image/{i}')
data = data.resize((data.size[0]//4,data.size[1]//4),Image.LANCZOS)
if data.mode == 'RGBA':
background = Image.new("RGB", data.size, (255, 255, 255)) # 白色背景
background.paste(data, (0, 0), data)
data = background
data.save(f'compress/{i}', "JPEG", quality=50)
if __name__ == '__main__':
filePath = 'image/'
number = 0
image = DownLoadImage('https://api.btstu.cn/sjbz/api.php')
# for i in range(65,100):
# image.writeImage(image.getImage(),i)
image.compressImage()
评论区