You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Python和Django压缩用户上传照片视频以节省存储空间的工具推荐问询

适用于Django应用的照片与视频压缩工具推荐

图片压缩工具

  • Pillow:Python生态中最常用的图像处理库,支持JPG、PNG等主流格式的压缩。可以通过调整质量参数、转换色彩模式来平衡体积与画质,直接集成到Django的文件上传流程中。示例代码:
    from PIL import Image
    import io
    
    def compress_image(image_file, quality=70):
        img = Image.open(image_file)
        # 转换RGBA/PNG为RGB以兼容JPG压缩
        if img.mode in ("RGBA", "P"):
            img = img.convert("RGB")
        output_buffer = io.BytesIO()
        # 启用优化参数进一步减小体积
        img.save(output_buffer, format="JPEG", quality=quality, optimize=True)
        output_buffer.seek(0)
        return output_buffer
    
  • pngquant-python:专门针对PNG格式的压缩工具,通过有损压缩算法在视觉损失极小的前提下大幅降低文件体积,是pngquant命令行工具的Python封装,适合处理用户上传的PNG图片。

视频压缩工具

  • ffmpeg-python:FFmpeg的Python绑定库,支持几乎所有视频格式的压缩与转码。可以灵活调整比特率、分辨率、编码格式等参数来控制压缩效果,需要先在服务器上安装FFmpeg本体。示例代码:
    import ffmpeg
    
    def compress_video(input_path, output_path, bitrate="1M"):
        (
            ffmpeg
            .input(input_path)
            .output(output_path, vcodec="libx264", b=bitrate, acodec="aac")
            .overwrite_output()
            .run(capture_stdout=True, capture_stderr=True)
        )
    
  • moviepy:基于FFmpeg的高阶视频处理库,API更简洁友好,适合快速实现视频压缩、裁剪等操作,同样依赖FFmpeg环境。示例代码:
    from moviepy.editor import VideoFileClip
    
    def compress_video_moviepy(input_path, output_path, target_resolution=(1280, 720)):
        with VideoFileClip(input_path) as clip:
            resized_clip = clip.resize(target_resolution)
            resized_clip.write_videofile(output_path, codec="libx264", audio_codec="aac")
    

集成建议

  • 在Django中,可以通过重写模型的save方法、使用django-signals监听文件上传事件,在文件保存到存储前完成压缩。
  • 增加文件类型判断逻辑,自动为图片/视频匹配对应的压缩工具。
  • 可添加前置检查,对小于阈值的文件跳过压缩,减少服务器资源消耗。

内容的提问来源于stack exchange,提问作者Topher76

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 19:22:14