Sha256: 024bd51292381ff89f43212f179cbe6cd68f5f155980d9316251f7d1f9dad3dd
Contents?: true
Size: 1.3 KB
Versions: 1
Compression:
Stored size: 1.3 KB
Contents
require 'png_quantizator' require 'piet/carrierwave_extension' module Piet class << self def optimize(path, opts={}) output = optimize_for(path, opts) puts output if opts[:verbose] true end def pngquant(path) PngQuantizator::Image.new(path).quantize! end private def optimize_for(path, opts) case mimetype(path) when "png", "gif" then optimize_png(path, opts) when "jpeg" then optimize_jpg(path, opts) end end def mimetype(path) IO.popen(['file', '--brief', '--mime-type', path], in: :close, err: :close){|io| io.read.chomp.sub(/image\//, '')} end def optimize_png(path, opts) level = (0..7).include?(opts[:level]) ? opts[:level] : 7 vo = opts[:verbose] ? "-v" : "-quiet" path.gsub!(/([\(\)\[\]\{\}\*\?\\])/, '\\\\\1') `#{command_path("optipng")} -o#{level} −strip all #{opts[:command_options]} #{vo} #{path}` end def optimize_jpg(path, opts) quality = (0..100).include?(opts[:quality]) ? opts[:quality] : 100 vo = opts[:verbose] ? "-v" : "-q" path.gsub!(/([\(\)\[\]\{\}\*\?\\])/, '\\\\\1') `#{command_path("jpegoptim")} -f -m#{quality} --strip-all #{opts[:command_options]} #{vo} #{path}` end def command_path(command) command end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
piet-0.2.6 | lib/piet.rb |