Class: Bidi2pdf::TestHelpers::Images::ImageSimilarityChecker

Inherits:
Object
  • Object
show all
Defined in:
lib/bidi2pdf/test_helpers/images/image_similarity_checker.rb

Instance Method Summary collapse

Constructor Details

#initialize(expected_image, image_to_check) ⇒ ImageSimilarityChecker

Returns a new instance of ImageSimilarityChecker.



9
10
11
12
# File 'lib/bidi2pdf/test_helpers/images/image_similarity_checker.rb', line 9

def initialize(expected_image, image_to_check)
  @expected_image = expected_image.is_a?(Vips::Image) ? expected_image : Vips::Image.new_from_file(expected_image)
  @image_to_check = image_to_check.is_a?(Vips::Image) ? image_to_check : Vips::Image.new_from_file(image_to_check)
end

Instance Method Details

#actual_fingerprintObject



34
35
36
# File 'lib/bidi2pdf/test_helpers/images/image_similarity_checker.rb', line 34

def actual_fingerprint
  @actual_fingerprint ||= fingerprint @image_to_check
end

#different?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/bidi2pdf/test_helpers/images/image_similarity_checker.rb', line 26

def different?
  !slightly_similar?
end

#distanceObject



38
39
40
# File 'lib/bidi2pdf/test_helpers/images/image_similarity_checker.rb', line 38

def distance
  @distance ||= DHashVips::IDHash.distance(expected_fingerprint, actual_fingerprint)
end

#expected_fingerprintObject



30
31
32
# File 'lib/bidi2pdf/test_helpers/images/image_similarity_checker.rb', line 30

def expected_fingerprint
  @expected_fingerprint ||= fingerprint @expected_image
end

#fingerprint(image) ⇒ Object



42
43
44
45
46
# File 'lib/bidi2pdf/test_helpers/images/image_similarity_checker.rb', line 42

def fingerprint(image)
  image = image.resize(32.0 / [image.width, image.height].min) if image.width < 32 || image.height < 32

  DHashVips::IDHash.fingerprint image
end

#similar?(tolerance: 20) ⇒ Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/bidi2pdf/test_helpers/images/image_similarity_checker.rb', line 14

def similar?(tolerance: 20)
  distance < tolerance
end

#slightly_similar?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/bidi2pdf/test_helpers/images/image_similarity_checker.rb', line 22

def slightly_similar?
  similar? tolerance: 25
end

#very_similar?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/bidi2pdf/test_helpers/images/image_similarity_checker.rb', line 18

def very_similar?
  similar? tolerance: 20
end