Einführung
Modul zur Bildverarbeitung.
Referenzcode
Bild speichern
from PIL import Image
def imgSave():
img = Image.open("./1.jpeg")
# img.show()
img.save("./newpt.jpg")
Bilddrehung
from PIL import Image
def transform():
img = Image.open("./1.jpeg")
# 水平旋转
pt1 = img.transpose(Image.FLIP_LEFT_RIGHT)
pt1.save("level.jpg")
# 垂直翻转
pt2 = img.rotate(180)
pt2.save("rotate.jpg")
# 水平+垂直翻转
pt3 = img.transpose(Image.FLIP_LEFT_RIGHT).rotate(180)
pt3.save("level_and_rotate.jpg")
Fügen Sie Text zu Bildern hinzu
from PIL import Image, ImageDraw, ImageFont
def addText():
img = Image.open("1.jpeg")
# 调用画图模块
draw = ImageDraw.Draw(img)
# 设置字体
# ->参数一:文字在图片的位置:(x, y)
# ->参数二:文字内容
# ->参数三:字体颜色,当然颜色也可以用RGB值指定
# ->参数四:字体类型
# font=ImageFront.truetype('font.ttf',24)
font = ImageFont.truetype("simhei", 50)
draw.text((50, 30), "test", fill="green", font=font) # font=tfont#中文 utf-8
img.save("font.jpg")
Bildfilter
from PIL import Image, ImageFilter
def filter(self):
# 滤镜:描绘轮廓(素描效果)
# 滤镜功能(更多参考文档)
# ->描绘轮廓
img = Image.open("cv2-test.jpg")
img = img.filter(ImageFilter.CONTOUR)
img.save("filter.jpg")
img.show()
Bildheftung
from PIL import Image, ImageDraw
def montage(self):
# 打开图片
img1 = Image.open("10.jpg")
img2 = Image.open("cv2-test.jpg")
# 查看图片尺寸,便于拼接图片
print(img1.size)
print(img2.size)
# 新建空白图片,三个参数分别是模式(RGB/RGBA)、大小、颜色
m = Image.new(mode="RGB", size=(1600, 614), color=(255, 100, 50))
# 拼接图片,第一个参数是图片,第二个是起始位置
m.paste(img1, (0, 0))
m.paste(img2, (800, 0))
m.show()
Bildzuschnitt
from PIL import Image
def clip(self):
img = Image.open("10.jpg")
print(img.size)
imgCut = img.crop((100, 200, 500, 600))
imgCut.show()
Bildgröße ändern
from PIL import Image
def resize(self):
img = Image.open("10.jpg")
# 获得图像尺寸:
w, h = img.size
# 缩放到50%:
img.thumbnail((w // 2, h // 2)) # 像素
# 把缩放后的图像用jpeg格式保存:
img.save("zoom.jpg")
Bildkompression
"""
实现图片压缩
1.保持图片大小比例不变
2.使用Image里面的resize进行
"""
from PIL import Image
import os
# 获取文件夹里面的图片
path_list = ["pictures" + "\\" + i for i in os.listdir("pictures")]
# print(path_list)
# 循环图片路径,依次对图片进行压缩
for path in path_list:
im = Image.open(path)
(x, y) = im.size # 读取图片尺寸(像素)
print("原图:", x, y)
print("压缩后:", x * 0.7, y * 0.7)
x_1 = int(x * 0.7) # 定义缩小后的标准宽度
y_1 = int(y * 0.7) # 计算缩小后的高度
out = im.resize((x_1, y_1), Image.ANTIALIAS) # 改变尺寸,保持图片高品质
# 判断图片的通道模式,若图片在RGBA模式下,需先将其转变为RGB模式
if out.mode == "RGBA":
# 转化为rgb格式
out = out.convert("RGB")
# 最后保存为jpg格式的图片,这里因为图片本身为jpg所以后缀不更改
out.save("pictures_new\{}".format(path.split("\\")[-1]))