1つの画像をより小さな部分にカットする

大きな画像ファイルを手助けするルビスクリプトを書く必要があります。私はimagemagickとrmagickライブラリ(ルビー)の基礎を知っていますが、今まで私は一般的に単純なことを行っていました(サムネイル、透かしなどを追加する)。今度はreseltion 3000/1000pxを10個の小さな画像(3000/100 px )。出来ますか?どの方法を使うのか分かりません。

1

2 答え

どのように crop の出力イメージごとに入力イメージを1回pingするのですか?

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

5
追加された
素晴らしい答えに感謝します。
追加された 著者 Arti,
10.times do |slice|
  system "convert example.jpg -crop x100+0+#{slice * 100} +repage example#{slice}.jpg"
end

編集:ええ、私はRMagickがクーラーだと思う:)

1
追加された
とにかくアマダン;)
追加された 著者 Arti,
ええ、私は convert を提案することを検討しましたが、Artiは特にRubyとRMagickを使用するように言いました。そして、 + repage は良いキャッチです。私は私の答えに相当するものを加えました。
追加された 著者 wdebeaum,