Rmagick如何裁剪成相同大小的图片?

3

我发现在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个回答

3

有一个与 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接