Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Rmagick裁剪到相同的图像?_Ruby_Image_Rmagick - Fatal编程技术网

Ruby Rmagick裁剪到相同的图像?

Ruby Rmagick裁剪到相同的图像?,ruby,image,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,2

我发现,当你想在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之前,我是否应该销毁第一个文件?

有一个名为:

img.crop!(x、y、宽度、高度)->self

img.crop!(重力、x、y、宽度、高度)->self

img.crop!(重力、宽度、高度)->self

裁剪的就地形式

所以你可以说:

@image = Magick::ImageList.new(path).crop!(10,10,20,20)
如果你想避免复印。或者你可以让GC来处理,然后说:

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