class Wraith::CompareImages
Attributes
wraith[R]
Public Class Methods
new(config)
click to toggle source
# File lib/wraith/compare_images.rb, line 12 def initialize(config) @wraith = Wraith::Wraith.new(config) end
Public Instance Methods
compare_images()
click to toggle source
# File lib/wraith/compare_images.rb, line 16 def compare_images files = Dir.glob("#{wraith.directory}/*/*.png").sort Parallel.each(files.each_slice(2), :in_processes => Parallel.processor_count) do |base, compare| diff = base.gsub(/([a-zA-Z0-9]+).png$/, "diff.png") info = base.gsub(/([a-zA-Z0-9]+).png$/, "data.txt") logger.info "Comparing #{base} and #{compare}" compare_task(base, compare, diff, info) logger.info "Saved diff" end end
compare_task(base, compare, output, info)
click to toggle source
# File lib/wraith/compare_images.rb, line 33 def compare_task(base, compare, output, info) cmdline = "compare -fuzz #{wraith.fuzz} -metric AE -highlight-color #{wraith.highlight_color} #{base} #{compare.shellescape} #{output}" px_value = Open3.popen3(cmdline) { |_stdin, _stdout, stderr, _wait_thr| stderr.read }.to_f begin img_size = ImageSize.path(output).size.inject(:*) percentage(img_size, px_value, info) rescue File.open(info, "w") { |file| file.write("invalid") } unless File.exist?(output) end end
percentage(img_size, px_value, info)
click to toggle source
# File lib/wraith/compare_images.rb, line 27 def percentage(img_size, px_value, info) pixel_count = (px_value / img_size) * 100 rounded = pixel_count.round(2) File.open(info, "w") { |file| file.write(rounded) } end