class Capybara::Screenshot::Diff::Drivers::VipsDriver
Attributes
new_file_name[R]
old_file_name[R]
options[R]
Public Class Methods
new(new_file_name, old_file_name = nil, **options)
click to toggle source
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 21 def initialize(new_file_name, old_file_name = nil, **options) @new_file_name = new_file_name @old_file_name = old_file_name || "#{new_file_name}~" @options = options || {} reset end
Public Instance Methods
add_black_box(memo, region)
click to toggle source
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 77 def add_black_box(memo, region) memo.draw_rect([0, 0, 0, 0], *region, fill: true) end
adds_error_details_to(_log)
click to toggle source
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 60 def adds_error_details_to(_log) end
chunky_png_comparator()
click to toggle source
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 81 def chunky_png_comparator @chunky_png_comparator ||= ImageCompare.new( @new_file_name, @old_file_name, **@options.merge(driver: :chunky_png, tolerance: nil, median_filter_window_size: nil) ) end
crop(dimensions, i)
click to toggle source
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 69 def crop(dimensions, i) i.crop(0, 0, *dimensions) end
difference_level(diff_mask, old_img, _region = nil)
click to toggle source
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 89 def difference_level(diff_mask, old_img, _region = nil) VipsUtil.difference_area_size_by(diff_mask).to_f / image_area_size(old_img) end
dimension(image)
click to toggle source
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 135 def dimension(image) [image.width, image.height] end
dimension_changed?(org_image, new_image)
click to toggle source
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 126 def dimension_changed?(org_image, new_image) return false if dimension(org_image) == dimension(new_image) change_msg = [org_image, new_image].map { |i| "#{i.width}x#{i.height}" }.join(" => ") warn "Image size has changed for #{@new_file_name}: #{change_msg}" true end
draw_rectangles(images, (left, top, right, bottom), rgba)
click to toggle source
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 139 def draw_rectangles(images, (left, top, right, bottom), rgba) images.map do |image| image.draw_rect(rgba, left - 1, top - 1, right - left + 2, bottom - top + 2) end end
filter_image_with_median(image, median_filter_window_size)
click to toggle source
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 73 def filter_image_with_median(image, median_filter_window_size) image.median(median_filter_window_size) end
find_difference_region(new_image, old_image, color_distance_limit, _shift_distance_limit, _area_size_limit, fast_fail: false)
click to toggle source
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 47 def find_difference_region(new_image, old_image, color_distance_limit, _shift_distance_limit, _area_size_limit, fast_fail: false) diff_mask = VipsUtil.difference_mask(color_distance_limit, old_image, new_image) region = VipsUtil.difference_region_by(diff_mask) [region, diff_mask] end
from_file(filename)
click to toggle source
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 117 def from_file(filename) result = ::Vips::Image.new_from_file(filename) result = result.colourspace("srgb") if result.bands < 3 result = result.bandjoin(255) if result.bands == 3 result end
height_for(image)
click to toggle source
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 97 def height_for(image) image.height end
image_area_size(old_img)
click to toggle source
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 93 def image_area_size(old_img) width_for(old_img) * height_for(old_img) end
inscribed?(dimensions, i)
click to toggle source
old private
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 65 def inscribed?(dimensions, i) dimension(i) == dimensions || i.width < dimensions[0] || i.height < dimensions[1] end
load_images(old_file_name, new_file_name, driver = self)
click to toggle source
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 113 def load_images(old_file_name, new_file_name, driver = self) [driver.from_file(old_file_name), driver.from_file(new_file_name)] end
reset()
click to toggle source
Resets the calculated data about the comparison with regard to the “new_image”. Data about the original image is kept.
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 32 def reset end
resize_image_to(image, new_width, new_height)
click to toggle source
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 109 def resize_image_to(image, new_width, new_height) image.resize(1.* new_width / new_height) end
save_image_to(image, filename)
click to toggle source
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 105 def save_image_to(image, filename) image.write_to_file(filename) end
shift_distance_different?()
click to toggle source
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 41 def shift_distance_different? warn "[capybara-screenshot-diff] Instead of shift_distance_limit " \ "please use median_filter_window_size and color_distance_limit options" chunky_png_comparator.different? end
shift_distance_equal?()
click to toggle source
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 35 def shift_distance_equal? warn "[capybara-screenshot-diff] Instead of shift_distance_limit " \ "please use median_filter_window_size and color_distance_limit options" chunky_png_comparator.quick_equal? end
size(region)
click to toggle source
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 54 def size(region) return 0 unless region (region[2] - region[0]) * (region[3] - region[1]) end
width_for(image)
click to toggle source
# File lib/capybara/screenshot/diff/drivers/vips_driver.rb, line 101 def width_for(image) image.width end