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