Как насчет crop
пинговать входное изображение один раз для каждого из выходных изображений:
output_images =
(0...10).collect { |i|
input_image.crop(0, i*100, 3000, 100, true)
}
В более общем смысле (но все же предполагая, что разрешение по Y делится на количество фрагментов):
def slice_image_horizontally(image, num_slices)
slice_height = image.y_resolution / num_slices
(0...num_slices).collect { |i|
image.crop(
0, i * slice_height,
image.x_resolution, slice_height,
true # reset image offset
)
}
end
http://www.imagemagick.org/RMagick/doc/image1.html#crop