Использовать image#get_pixel
: http://www.simplesystems.org/RMagick/doc/image2.html#get_pixels Предупреждение. Эти документы старые, поэтому они могли измениться в более новых версиях.Посмотрите на ваши собственные rdocs, используя $ gem server
, предполагая, что они имеют rdocs.
image#rows
дает вам высоту изображения, тогда вы можете сделать что-то вроде (не проверено):
def black_line?(pixels)
pixels.each do |pixel|
unless pixel.red == 0 && pixel.green == 0 && pixel.blue == 0
return false
end
end
true
end
black_line_heights = []
height = image.rows
width = image.columns
height.times do |y|
pixels = image.get_pixel(0,y,width,1)
black_line_heights << y if black_line?(pixels)
end
Пожалуйста, имейте в виду, что я не уверен в API.Глядя на старые документы, и я не могу проверить это сейчас.Но похоже, что общий подход вы бы выбрали.Кстати, предполагается, что границы строк имеют толщину 1 пиксель.Если нет, измените 1
на фактическую толщину, и этого может быть достаточно, чтобы он работал так, как вы ожидаете.