lib/image_optim/worker/jpegtran.rb in image_optim-0.7.3 vs lib/image_optim/worker/jpegtran.rb in image_optim-0.8.0

- old
+ new

@@ -1,27 +1,27 @@ require 'image_optim/worker' class ImageOptim class Worker class Jpegtran < Worker - # Copy all chunks or none (defaults to false) - attr_reader :copy_chunks + option(:copy_chunks, false, 'Copy all chunks'){ |v| !!v } - # Create progressive JPEG file (defaults to true) - attr_reader :progressive + option(:progressive, true, 'Create progressive JPEG file'){ |v| !!v } - def optimize(src, dst) - args = %W[-optimize -outfile #{dst} #{src}] - args.unshift '-copy', copy_chunks ? 'all' : 'none' - args.unshift '-progressive' if progressive - execute(:jpegtran, *args) && optimized?(src, dst) - end + option(:jpegrescan, false, 'Use jpegtran through jpegrescan, ignore progressive option'){ |v| !!v } - private - - def parse_options(options) - get_option!(options, :copy_chunks, false){ |v| !!v } - get_option!(options, :progressive, true){ |v| !!v } + def optimize(src, dst) + if jpegrescan + args = %W[#{src} #{dst}] + args.unshift '-s' unless copy_chunks + resolve_bin!(:jpegtran) + execute(:jpegrescan, *args) && optimized?(src, dst) + else + args = %W[-optimize -outfile #{dst} #{src}] + args.unshift '-copy', copy_chunks ? 'all' : 'none' + args.unshift '-progressive' if progressive + execute(:jpegtran, *args) && optimized?(src, dst) + end end end end end