Rmagick裁剪到相同的图像?

时间:2014-01-03 19:38:36

标签: ruby image rmagick

我发现当你想在Rmagick中裁剪图像时,它不会改变当前的图像对象,但会返回一个新图像。

所以,如果我有:

@image = Magick::ImageList.new(path)
@cropped = @image.crop(10,10,20,20)

我想知道以下代码是否是一个很好的解决方案,如果我想要总是@image来包含正被操纵的当前图像。

@image = Magick::ImageList.new(path)
@image = @image.crop(10,10,20,20)

这样可行,但我会在这里有两张图片吗?我应该在重新分配给@image之前销毁第一个吗?

1 个答案:

答案 0 :(得分:4)

crop的就地版本名为crop!

  

img.crop!(x, y, width, height) -> self
  img.crop!(gravity, x, y, width, height) -> self
  img.crop!(gravity, width, height) -> self

     

crop的就地形式。

所以你可以说:

@image = Magick::ImageList.new(path).crop!(10,10,20,20)

如果你想避免复制。或者你可以让GC处理它并说:

@image = Magick::ImageList.new(path).crop(10,10,20,20) # No `!` here