使用image = MiniMagick从Original创建多个副本

时间:2017-05-31 16:44:54

标签: ruby minimagick

我需要生成不同格式/大小的图像的多个副本。如果不重新打开每种格式/尺寸的来源,我可以这样做吗?

举个例子:

# Original image is jpeg
image = MiniMagick::Image.open url
image.crop dimensions
image.format 'pdf'
upload image
# image = MiniMagick::Image.open url # No! Needless network traffic and processing.
image.format 'png'
image.resize new_size
upload image

如果没有第二个#open,此代码就没有用了,因为当image.format 'png'被调用时,图像是PDF,所以我最终会栅格化它,这不是我想要做的。

有一个方法#clone,但它没有复制图像对象。而是为转换器设置参数。我无法弄清楚这是否符合我的目的。

1 个答案:

答案 0 :(得分:0)

我找到了一种方法,这似乎很好。

# Original image is jpeg
image = MiniMagick::Image.open url
image.crop dimensions

new_image = MiniMagick::Image.open image.tempfile.path

image.format 'pdf'
upload image

new_image.format 'png'
new_image.resize new_size
upload new_image

PDF和PNG都将被裁剪,但每个只会被转换一次。