ImageTranscodeParam转码参数配置

wen java案例 2

本文目录导读:

ImageTranscodeParam转码参数配置

  1. 基本结构
  2. 常见配置参数
  3. 完整配置示例
  4. 使用场景示例
  5. 最佳实践建议

我来详细介绍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
}

最佳实践建议

  1. 格式选择

    • WebP/AVIF:更好的压缩率,浏览器兼容性检查
    • JPEG:照片类内容
    • PNG:需要透明背景
  2. 质量平衡

    • 质量控制:70-85之间平衡质量和大小
    • 渐进式加载:对大型图片开启
  3. 缓存策略

    • 对相同参数结果缓存
    • 设置合理的缓存过期时间
  4. 错误处理

    • 验证输入参数
    • 处理格式不支持的情况
    • 监控转码性能

需要我详细介绍某个特定场景的配置吗?

抱歉,评论功能暂时关闭!