本文目录导读:

我来详细介绍ImageTranscodeParam(图片转码参数)的配置信息。
基本结构
class ImageTranscodeParam:
def __init__(self):
self.format = None # 输出格式
self.quality = None # 质量参数
self.size = None # 输出尺寸
self.resize_strategy = None # 缩放策略
self.crop = None # 裁剪参数
self.rotate = None # 旋转参数
self.watermark = None # 水印参数
self.color = None # 颜色调整
self.compression = None # 压缩级别
常见配置参数
格式转换 (format)
# 支持的格式
formats = [
"jpeg", # JPEG格式
"png", # PNG格式
"webp", # WebP格式
"bmp", # BMP格式
"gif", # GIF格式
"tiff", # TIFF格式
"avif", # AVIF格式
"heif", # HEIF格式
]
# 配置示例
param.format = "webp" # 转换为WebP格式
质量设置 (quality)
# 质量范围 1-100 param.quality = 80 # 设置质量为80% # 不同格式的质量含义 # JPEG: 压缩质量 (1-100) # WebP: 压缩质量 (0-100) # PNG: 无损压缩级别 (0-9)
尺寸调整 (size)
# 方法1:固定尺寸 param.size = (1920, 1080) # (宽度, 高度) # 方法2:限制最大尺寸 param.size = (1920, 0) # 宽度固定1920,高度自适应 param.size = (0, 1080) # 高度固定1080,宽度自适应 # 方法3:百分比缩放 param.size = (0.5, 0.5) # 缩小50%
缩放策略 (resize_strategy)
from enum import Enum
class ResizeStrategy(Enum):
FIT = "fit" # 适应,保持比例
FILL = "fill" # 填充,可能变形
CROP = "crop" # 裁剪
PAD = "pad" # 填充背景
# 配置示例
param.resize_strategy = ResizeStrategy.FIT
裁剪参数 (crop)
# 配置裁剪区域 (x, y, width, height)
param.crop = {
"x": 100, # 起始X坐标
"y": 100, # 起始Y坐标
"width": 300, # 裁剪宽度
"height": 300 # 裁剪高度
}
# 自动裁剪模式
param.crop = {
"mode": "center", # 中心裁剪
"ratio": "1:1" # 宽高比
}
旋转参数 (rotate)
# 旋转角度
param.rotate = 90 # 旋转90度
# 翻转模式
from enum import Enum
class FlipMode(Enum):
HORIZONTAL = "horizontal" # 水平翻转
VERTICAL = "vertical" # 垂直翻转
BOTH = "both" # 水平和垂直翻转
param.flip = FlipMode.HORIZONTAL
水印参数 (watermark)
param.watermark = {
"type": "text", # 文字水印
"content": "Copyright", # 水印内容
"position": "bottom-right", # 位置
"opacity": 0.5, # 透明度 (0-1)
"font_size": 24, # 字体大小
"color": "ffffff", # 颜色
"margin": 10 # 边距
}
# 图片水印
param.watermark = {
"type": "image",
"image_url": "watermark.png", # 水印图片
"position": "center", # 位置
"opacity": 0.3,
"scale": 20 # 水印缩放比例(%)
}
颜色调整 (color)
param.color = {
"brightness": 0.1, # 亮度调整 (-1 to 1)
"contrast": 0.2, # 对比度调整 (-1 to 1)
"saturation": 0.1, # 饱和度调整 (-1 to 1)
"hue": 10, # 色调调整 (-180 to 180)
"gamma": 1.2 # 伽马校正
}
压缩级别 (compression)
from enum import Enum
class CompressionLevel(Enum):
FAST = "fast" # 快速压缩,质量一般
BALANCED = "balanced" # 平衡模式
HIGH = "high" # 高质量压缩,速度较慢
param.compression = CompressionLevel.BALANCED
完整配置示例
# 完整的转码参数配置
def create_transcode_param():
param = ImageTranscodeParam()
# 基本设置
param.format = "webp"
param.quality = 80
# 尺寸调整
param.size = (1920, 1080)
param.resize_strategy = ResizeStrategy.FIT
# 裁剪
param.crop = {
"mode": "center",
"ratio": "16:9"
}
# 水印
param.watermark = {
"type": "text",
"content": "Photo by User",
"position": "bottom-right",
"opacity": 0.3,
"font_size": 16,
"color": "ffffff"
}
# 颜色调整
param.color = {
"brightness": 0.05,
"contrast": 0.1,
"saturation": 0.05
}
return param
使用场景示例
# 1. 缩略图生成
thumbnail_param = ImageTranscodeParam()
thumbnail_param.format = "jpeg"
thumbnail_param.size = (150, 150)
thumbnail_param.resize_strategy = ResizeStrategy.CROP
thumbnail_param.quality = 85
# 2. 高清图片优化
optimize_param = ImageTranscodeParam()
optimize_param.format = "webp"
optimize_param.quality = 80
optimize_param.size = (1920, 0) # 限制宽度
optimize_param.color = {
"brightness": 0.02,
"contrast": 0.05
}
# 3. 合规图片处理
compliance_param = ImageTranscodeParam()
compliance_param.format = "jpeg"
compliance_param.size = (800, 800)
compliance_param.max_file_size = "5MB" # 限制文件大小
compliance_param.watermark = {
"type": "image",
"image_url": "compliance_watermark.png",
"position": "center",
"opacity": 0.2
}
最佳实践建议
-
格式选择
- WebP/AVIF:更好的压缩率,浏览器兼容性检查
- JPEG:照片类内容
- PNG:需要透明背景
-
质量平衡
- 质量控制:70-85之间平衡质量和大小
- 渐进式加载:对大型图片开启
-
缓存策略
- 对相同参数结果缓存
- 设置合理的缓存过期时间
-
错误处理
- 验证输入参数
- 处理格式不支持的情况
- 监控转码性能
需要我详细介绍某个特定场景的配置吗?