ruby - Rmagick 裁剪到相同的图像?

标签 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 之前销毁第一个吗?

最佳答案

crop 有一个就地版本称为 crop! :

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

The in-place form of crop.

所以你可以说:

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

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

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

关于ruby - Rmagick 裁剪到相同的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20911433/

相关文章:

html - 外部容器(围绕 div 元素的图像)

jquery - 难以使用 CSS 定位图像

c++ - 如何使用 DLIB 库加载 jpeg 文件?

ruby-on-rails - rails s 在设计配置发送邮件时出错

ruby - 使用 Ruby 查找给定编码字符串的组合

ruby - 如何使用 rspec 中的字符串键模拟散列,它来自 ruby​​ 的新散列表示法中的 web 服务

ruby - RMagick - 如何将网格图像裁剪成图像数组?

ruby - 如何将自定义元数据写入由 RMagick 创建的图像?

ruby-on-rails - RMagick 随重力改变图像范围

ruby-on-rails - 在 Rails 4 中向模型添加属性