1. Pillow (PIL)
场景: 使用Pillow进行图像处理,包括图像裁剪、旋转和添加水印。
from PIL import Image, ImageDraw, ImageFont
# 打开图像
image = Image.open("example.jpg")
# 裁剪图像
cropped_image = image.crop((100, 100, 400, 400))
cropped_image.save("cropped_example.jpg")
# 旋转图像
rotated_image = image.rotate(90)
rotated_image.save("rotated_example.jpg")
# 添加水印
draw = ImageDraw.Draw(image)
font = ImageFont.truetype("arial.ttf", 36)
draw.text((10, 10), "Sample Watermark", font=font, fill=(255, 0, 0, 128))
image.save("watermarked_example.jpg")
2. imageio
场景: 使用imageio读取和写入多种格式的图像,并创建一个简单的动画GIF。
import imageio
import numpy as np
# 读取图像
image = imageio.imread('example.jpg')
print("Image shape:", image.shape)
# 写入图像
imageio.imwrite('output.png', image)
# 创建动画GIF
images = []
for i in range(10):
images.append(np.random.randint(0, 255, (100, 100, 3), dtype=np.uint8))
imageio.mimsave('animation.gif', images, duration=0.5)
3. scikit-image
场景: 使用scikit-image进行图像增强和特征检测。
from skimage import io, exposure, feature
import matplotlib.pyplot as plt
# 读取图像
image = io.imread("example.jpg", as_gray=True)
# 直方图均衡化
equalized_image = exposure.equalize_hist(image)
# Canny边缘检测
edges = feature.canny(equalized_image, sigma=3)
# 显示结果
fig, ax = plt.subplots(nrows=1, ncols=3, figsize=(12, 4))
ax[0].imshow(image, cmap='gray')
ax[0].set_title('Original Image')
ax[0].axis('off')
ax[1].imshow(equalized_image, cmap='gray')
ax[1].set_title('Equalized Image')
ax[1].axis('off')
ax[2].imshow(edges, cmap='gray')
ax[2].set_title('Canny Edges')
ax[2].axis('off')
plt.show()
4. opencv-python
场景: 使用OpenCV进行人脸检测和图像模糊处理。
import cv2
# 读取图像
image = cv2.imread('example.jpg')
# 转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 加载预训练的人脸检测模型
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
# 检测人脸
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
# 绘制矩形框并模糊处理
for (x, y, w, h) in faces:
# 绘制矩形框
cv2.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0), 2)
# 模糊处理
face = image[y:y+h, x:x+w]
blurred_face = cv2.GaussianBlur(face, (99, 99), 30)
image[y:y+h, x:x+w] = blurred_face
# 显示结果
cv2.imshow('Face Detection and Blurring', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
5. pytesseract
场景: 使用pytesseract进行光学字符识别(OCR)。
import pytesseract
from PIL import Image
# 配置Tesseract路径
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
# 读取图像
image = Image.open('text_image.png')
# 进行OCR
text = pytesseract.image_to_string(image,)
print("Extracted Text:", text)
6. pdfminer.six
场景: 使用pdfminer.six解析PDF文档并提取文本。
from pdfminer.high_level import extract_text
# 读取PDF并提取文本
text = extract_text("example.pdf")
print("Extracted Text:", text)
7. reportlab
场景: 使用ReportLab生成带有表格和图表的PDF文档。
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib import colors
# 创建PDF文档
doc = SimpleDocTemplate("report.pdf", pagesize=letter)
# 定义样式
styles = getSampleStyleSheet()
# 创建内容
data = [
['Name', 'Age', 'Country'],
['Alice', 30, 'USA'],
['Bob', 25, 'Canada'],
['Charlie', 35, 'UK']
]
table = Table(data)
table.setStyle(TableStyle([
('BACKGROUND', (0, 0), (-1, 0), colors.grey),
('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
('FONTSIZE', (0, 0), (-1, 0), 14),
('BOTTOMPADDING', (0, 0), (-1, 0), 12),
('BACKGROUND', (0, 1), (-1, -1), colors.beige),
('GRID', (0, 0), (-1, -1), 1, colors.black)
]))
# 添加段落
content = [Paragraph("Report Title", styles['Heading1']), table]
# 生成PDF
doc.build(content)
8. WeasyPrint
场景: 使用WeasyPrint从HTML和CSS生成PDF文档。
from weasyprint import HTML, CSS
# HTML和CSS内容
html_content = """
<!DOCTYPE html>
<html>
<head>
<title>Sample Report</title>
</head>
<body>
<h1>Report Title</h1>
<p>This is a sample report generated using WeasyPrint.</p>
<table style="border: 1px solid black; border-collapse: collapse;">
<tr><th>Name</th><th>Age</th><th>Country</th></tr>
<tr><td>Alice</td><td>30</td><td>USA</td></tr>
<tr><td>Bob</td><td>25</td><td>Canada</td></tr>
<tr><td>Charlie</td><td>35</td><td>UK</td></tr>
</table>
</body>
</html>
"""
css_content = """
body {
font-family: Arial, sans-serif;
}
h1 {
color: #333;
}
table, th, td {
border: 1px solid black;
padding: 5px;
}
th {
background-color: #f2f2f2;
}
"""
# 生成PDF
HTML(string=html_content).write_pdf('weasyprint_report.pdf', stylesheets=[CSS(strin
9. PyPDF2
场景: 使用PyPDF2合并多个PDF文件并添加水印。
import PyPDF2
# 合并多个PDF文件
pdf_writer = PyPDF2.PdfFileWriter()
# 读取第一个PDF文件
with open("file1.pdf", "rb") as file:
pdf_reader = PyPDF2.PdfFileReader(file)
for page_num in range(pdf_reader.numPages):
page = pdf_reader.getPage(page_num)
pdf_writer.addPage(page)
# 读取第二个PDF文件
with open("file2.pdf", "rb") as file:
pdf_reader = PyPDF2.PdfFileReader(file)
for page_num in range(pdf_reader.numPages):
page = pdf_reader.getPage(page_num)
pdf_writer.addPage(page)
# 添加水印
watermark = PyPDF2.PdfFileReader(open("watermark.pdf", "rb"))
for page_num in range(pdf_writer.getNumPages()):
page = pdf_writer.getPage(page_num)
page.mergePage(watermark.getPage(0))
# 保存合并后的PDF文件
with open("merged_with_watermark.pdf", "wb") as output_file:
pdf_writer.write(output_file)
10. PyMuPDF (fitz)
场景: 使用PyMuPDF提取PDF中的文本和图像。
import fitz # PyMuPDF
# 读取PDF文件
doc = fitz.open("example.pdf")
# 提取文本
for page_num in range(len(doc)):
page = doc.load_page(page_num)
text = page.get_text("text")
print(f"Page {page_num + 1} Text:\n{text}\n")
# 提取图像
for page_num in range(len(doc)):
page = doc.load_page(page_num)
images = page.get_images(full=True)
for img_index, img in enumerate(images):
xref = img[0]
base_image = doc.extract_image(xref)
image_bytes = base_image["image"]
image_ext = base_image["ext"]
with open(f"page{page_num+1}_img{img_index+1}.{image_ext}", "wb") as image_file:
image_file.write(image_bytes)
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。




2361

被折叠的 条评论
为什么被折叠?



