Class: DupeMagick
- Inherits:
-
Object
- Object
- DupeMagick
- Defined in:
- lib/dupe-magick.rb
Instance Attribute Summary collapse
-
#distance ⇒ Object
Returns the value of attribute distance.
-
#source_cube ⇒ Object
Returns the value of attribute source_cube.
-
#source_vector ⇒ Object
Returns the value of attribute source_vector.
-
#target_cube ⇒ Object
Returns the value of attribute target_cube.
-
#target_vector ⇒ Object
Returns the value of attribute target_vector.
Instance Method Summary collapse
- #compare_images(source, target, params) ⇒ Object
- #deserialize(obj) ⇒ Object
- #find_duplicates(source_file, target_path) ⇒ Object
- #serialize(obj) ⇒ Object
Instance Attribute Details
#distance ⇒ Object
Returns the value of attribute distance.
8 9 10 |
# File 'lib/dupe-magick.rb', line 8 def distance @distance end |
#source_cube ⇒ Object
Returns the value of attribute source_cube.
8 9 10 |
# File 'lib/dupe-magick.rb', line 8 def source_cube @source_cube end |
#source_vector ⇒ Object
Returns the value of attribute source_vector.
8 9 10 |
# File 'lib/dupe-magick.rb', line 8 def source_vector @source_vector end |
#target_cube ⇒ Object
Returns the value of attribute target_cube.
8 9 10 |
# File 'lib/dupe-magick.rb', line 8 def target_cube @target_cube end |
#target_vector ⇒ Object
Returns the value of attribute target_vector.
8 9 10 |
# File 'lib/dupe-magick.rb', line 8 def target_vector @target_vector end |
Instance Method Details
#compare_images(source, target, params) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/dupe-magick.rb', line 10 def compare_images(source, target, params) source_image = process_image(source, params) target_image = process_image(target, params) @source_vector = create_vector_from_image(source_image) @source_cube = create_cube_from_vector(@source_vector) @target_vector = create_vector_from_image(target_image) @target_cube = create_cube_from_vector(@target_vector) @distance = calculate_euclidian_distance(@source_cube, @target_cube) puts "Images are " + euclidian_plain_language(@distance) + ", score: " + @distance.to_i.to_s @distance.to_i end |
#deserialize(obj) ⇒ Object
46 47 48 49 |
# File 'lib/dupe-magick.rb', line 46 def deserialize(obj) # for retrieving image data from a blob in mysql etc Base64.decode64(Marshal.load(obj)) end |
#find_duplicates(source_file, target_path) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/dupe-magick.rb', line 22 def find_duplicates(source_file, target_path) source_image = process_image(source_file, {:geometry => '8x8!'}) @source_vector = create_vector_from_image(source_image) @source_cube = create_cube_from_vector(@source_vector) files = Dir[target_path] = ("#{files.size} images", files.size) results = {} files.each do |target| target_image = process_image(target, {:geometry => '8x8!'}) @target_vector = create_vector_from_image(target_image) @target_cube = create_cube_from_vector(@target_vector) @distance = calculate_euclidian_distance(@source_cube, @target_cube) results[target] = @distance .inc end .finish write_results(source_file, results) end |
#serialize(obj) ⇒ Object
41 42 43 44 |
# File 'lib/dupe-magick.rb', line 41 def serialize(obj) # for storing image data as a blob in mysql etc Base64.encode64(Marshal.dump(obj)) end |