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)