Разрежьте одно изображение на более мелкие кусочки - PullRequest
1 голос
/ 27 октября 2011

Мне нужно написать сценарий ruby, который поможет мне с большими файлами изображений. Я знаю основы библиотек imagemagick и rmagick (ruby), но до сих пор я делал простые вещи (миниатюры, добавление водяных знаков и т. Д.). Теперь я хочу разрезать файл с примером resoultion 3000 / 1000px на десять меньших изображений (3000/100 px ). Является ли это возможным? Я понятия не имею, какой метод использовать.

Ответы [ 2 ]

5 голосов
/ 27 октября 2011

Как насчет 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

1 голос
/ 27 октября 2011
10.times do |slice|
  system "convert example.jpg -crop x100+0+#{slice * 100} +repage example#{slice}.jpg"
end

РЕДАКТИРОВАТЬ: Да, я думаю, RMagick круче :)

...