@@ -45,19 +45,18 @@ def distance a, b
45
45
return right . uniq [ 1 ] if left . count ( left . last ) > right . count ( right . first )
46
46
left . last
47
47
end
48
- fail unless 2 == @@median [ [ 1 , 2 , 2 , 2 , 2 , 2 , 3 ] ]
49
- fail unless 3 == @@median [ [ 1 , 2 , 2 , 2 , 2 , 3 , 3 ] ]
50
- fail unless 3 == @@median [ [ 1 , 1 , 2 , 2 , 3 , 3 , 3 ] ]
51
- fail unless 2 == @@median [ [ 1 , 1 , 1 , 2 , 3 , 3 , 3 ] ]
52
- fail unless 2 == @@median [ [ 1 , 1 , 2 , 2 , 2 , 2 , 3 ] ]
53
- fail unless 2 == @@median [ [ 1 , 2 , 2 , 2 , 2 , 3 ] ]
54
- fail unless 3 == @@median [ [ 1 , 2 , 2 , 3 , 3 , 3 ] ]
55
- fail unless 1 == @@median [ [ 1 , 1 , 1 ] ]
56
- fail unless 1 == @@median [ [ 1 , 1 ] ]
57
48
58
49
def calculate file
50
+ calculate_for_image ( Vips ::Image . new_from_file file )
51
+ end
52
+
53
+ def calculate_for_buffer buffer
54
+ calculate_for_image ( Vips ::Image . new_from_buffer buffer , '' )
55
+ end
56
+
57
+ private
58
+ def calculate_for_image ( image )
59
59
hash_size = 8
60
- image = Vips ::Image . new_from_file file
61
60
image = image . resize ( hash_size . fdiv ( image . width ) , vscale : hash_size . fdiv ( image . height ) ) . colourspace ( "b-w" )
62
61
63
62
array = image . to_a . map &:flatten
@@ -71,7 +70,6 @@ def calculate file
71
70
end
72
71
( ( ( ( ( d1 << hash_size * hash_size ) + d2 ) << hash_size * hash_size ) + i1 ) << hash_size * hash_size ) + i2
73
72
end
74
-
75
73
end
76
74
77
75
end
0 commit comments