lib/image_optim/worker/jpegrecompress.rb in image_optim-0.27.1 vs lib/image_optim/worker/jpegrecompress.rb in image_optim-0.28.0

- old
+ new

@@ -24,10 +24,24 @@ QUALITY_OPTION = option(:quality, 3, "JPEG quality preset: #{quality_names_desc}") do |v| OptionHelpers.limit_with_range(v.to_i, 0...QUALITY_NAMES.length) end + METHOD_OPTION = + option(:method, 'ssim', 'Comparison Metric: '\ + '`mpe` - Mean pixel error, '\ + '`ssim` - Structural similarity, '\ + '`ms-ssim` - Multi-scale structural similarity (slow!), '\ + '`smallfry` - Linear-weighted BBCQ-like (may be patented)') do |v, opt_def| + if %w[mpe ssim ms-ssim smallfry].include? v + v + else + warn "Unknown method for jpegrecompress: #{v}" + opt_def.default + end + end + def used_bins [:'jpeg-recompress'] end # Run early as lossy worker @@ -36,9 +50,10 @@ end def optimize(src, dst) args = %W[ --quality #{QUALITY_NAMES[quality]} + --method #{method} --no-copy #{src} #{dst} ] execute(:'jpeg-recompress', *args) && optimized?(src, dst)