Class: ImageDiff
- Inherits:
-
Object
- Object
- ImageDiff
- Defined in:
- lib/image_comparable/image_diff.rb
Instance Method Summary collapse
- #calculate_score(diff, screenshot, acceptant_criteria) ⇒ Object
- #draw ⇒ Object
- #file_name ⇒ Object
-
#initialize(baseline, screenshot, acceptant_criteria) ⇒ ImageDiff
constructor
A new instance of ImageDiff.
- #path ⇒ Object
- #save ⇒ Object
Constructor Details
#initialize(baseline, screenshot, acceptant_criteria) ⇒ ImageDiff
Returns a new instance of ImageDiff.
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/image_comparable/image_diff.rb', line 3 def initialize(baseline, screenshot, acceptant_criteria) @baseline = baseline.image @screenshot = screenshot.image @diff = [] @baseline.height.times do |y| @baseline.row(y).each_with_index do |pixel, x| @diff << [x, y] unless pixel == @screenshot[x, y] end end @x = @diff.map { |xy| xy[0] } @y = @diff.map { |xy| xy[1] } @acceptant_criteria = acceptant_criteria end |
Instance Method Details
#calculate_score(diff, screenshot, acceptant_criteria) ⇒ Object
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/image_comparable/image_diff.rb', line 27 def calculate_score(diff, screenshot, acceptant_criteria) raise 'Acceptant criteria cannot be null' if acceptant_criteria.nil? acceptant_criteria = acceptant_criteria.to_f result = (diff.length.to_f / screenshot.pixels.length) * 100 return unless result > acceptant_criteria raise "The score result: #{result}%, is minor then " \ "acceptant_criteria: #{acceptant_criteria}%" end |
#draw ⇒ Object
38 39 40 |
# File 'lib/image_comparable/image_diff.rb', line 38 def draw @screenshot.rect(@x.min, @y.min, @x.max, @y.max, ChunkyPNG::Color::BLACK) end |
#file_name ⇒ Object
46 47 48 |
# File 'lib/image_comparable/image_diff.rb', line 46 def file_name "#{Time.now.strftime('%Y%m%d')}_diff.png" end |
#path ⇒ Object
42 43 44 |
# File 'lib/image_comparable/image_diff.rb', line 42 def path @path ||= File.join(FileUtils.pwd, 'diff_images') end |
#save ⇒ Object
20 21 22 23 24 25 |
# File 'lib/image_comparable/image_diff.rb', line 20 def save Dir.mkdir(path) unless Dir.exist?(path) draw.save(File.join(path, file_name)) calculate_score(@diff, @screenshot, @acceptant_criteria) end |