我需要生成不同格式/大小的图像的多个副本。如果不重新打开每种格式/尺寸的来源,我可以这样做吗?
举个例子:
# 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
,但它没有复制图像对象。而是为转换器设置参数。我无法弄清楚这是否符合我的目的。
答案 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都将被裁剪,但每个只会被转换一次。