Snijd een afbeelding in kleinere stukjes

Ik moet een robijn script schrijven dat me zal helpen met grote afbeeldingsbestanden. Ik ken de basisprincipes van imagemagick en rmagick-bibliotheek (ruby), maar tot nu toe deed ik over het algemeen eenvoudige dingen (thumbnailing, toevoegen van watermerken etc.) Nu wil ik het bestand knippen met voorbeeldweergave 3000/1000px in tien kleinere afbeeldingen (3000/100 px ). Is dit mogelijk? Ik heb geen idee welke methode ik moet gebruiken.

1

2 antwoord

Hoe zit het met bijsnijden ping het invoerbeeld eenmaal voor elk van de uitvoerafbeeldingen:

output_images =
  (0...10).collect { |i|
    input_image.crop(0, i*100, 3000, 100, true)
  }

Meer in het algemeen (maar nog steeds aannemende dat de Y-resolutie deelbaar is door het aantal segmenten):

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
toegevoegd
Hartelijk dank voor een goed antwoord!
toegevoegd de auteur Arti, de bron
10.times do |slice|
  system "convert example.jpg -crop x100+0+#{slice * 100} +repage example#{slice}.jpg"
end

EDIT: Ja, ik denk dat RMagick cooler is :)

1
toegevoegd
Toch bedankt Amadan;)
toegevoegd de auteur Arti, de bron
Ja, ik overwoog om convert te suggereren, maar Arti zei specifiek om ruby en RMagick te gebruiken. En + repage is een goede vangst; Ik heb iets toegevoegd dat equivalent is aan mijn antwoord.
toegevoegd de auteur wdebeaum, de bron