Image_Processing/MiniMagick/Shrine 如何为各衍生图片设置不同导出质量
实现方案
你可以为每个衍生图单独指定导出质量,无需改动原文件的88质量配置,核心逻辑是在生成单个衍生时传入独立的saver质量参数即可,修改后参考代码如下:
require "image_processing/mini_magick" class ImageUploader < Shrine Attacher.derivatives do |original| magick_base = ImageProcessing::MiniMagick.source(original) { # 单独设置thumb导出质量为50 thumb: magick_base.resize_to_fill!(150, 150, saver: { quality: 50 }), # 单独设置medium导出质量为50 medium: magick_base.resize_to_fill!(500, 500, saver: { quality: 50 }), # 单独设置large导出质量为88,和原文件质量一致 large: magick_base.resize_to_limit!(800, 800, saver: { quality: 88 }), } end end
配置说明
- 原文件的质量88配置无需调整,衍生图的独立参数不会影响原文件存储逻辑
- 每个衍生的
saver参数优先级高于全局配置,可灵活为不同尺寸的图片设置适配的质量值,达到压缩体积和保证清晰度的平衡
内容的提问来源于stack exchange,提问作者Wordica
相关产品推荐
相关产品推荐

