Dziwne zachowanie biblioteki ImageMagick

Witam,

tworzę aplikację operującą na zdjęciach i napotkałem na pewien problem. Mianowicie operuje na jednym obrazie test.png i z niego trzy razy wycinam różnego rozmiaru obrazy. Za trzecim razem nie mogę w żaden sposób wyciąć tego co chcę, metoda crop wariuje podając jakieś z kosmosu parametry dot. szerokości i długości.

Ktoś miał podobny problem?

Poniżej załączam kod:

[code]image = Magick::Image.read(“app/assets/images/1.png”).first
image_height = image.rows
image_width = image.columns
d = params[:dimensions].split("_")
new_image = image.crop!(d[0].to_i, d[1].to_i, d[2].to_i, d[3].to_i)
new_image.write(“app/assets/images/new.png”)
# creating top image
top_image = Magick::Image.read(“app/assets/images/1.png”).first
new_top_image = top_image.crop!(0, 0, image_width, d[1].to_i)
new_top_image.write(“app/assets/images/top_image.png”)
# creating bottom image

bottom_image = Magick::Image.read("app/assets/images/1.png").first
new_height = image_height - d[1].to_i
new_bottom_image = bottom_image.crop(d[4].to_i, d[5].to_i, image_width, new_height.to_i) #metoda ktora swiruje
new_bottom_image.write("app/assets/images/bottom_image.png")[/code]

A przypadkiem metoda crop! nie zmienia też obiektu na którym jest wywoływana? Tak jak np gsub!

http://www.simplesystems.org/RMagick/doc/image1.html#crop_bang

The in-place form of crop. [color=#FF0000]Returns self[/color]

A mi się wydaję, że metoda crop jest odpowiednia w Twoim przypadku.