使用 image = MiniMagick 从原始文件制作多个副本
Make Multiple Copies From Original with image = MiniMagick
我需要在不同 formats/sizes 中生成多个图像副本。我可以在不为每个 format/size 重新打开源代码的情况下做到这一点吗?
举个例子:
# 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
,但它不会克隆图像对象。相反,它为转换器设置一个参数。我不知道这是否符合我的目的。
我找到了一种方法,看起来不错。
# 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 都将被裁剪,但每个只会转换一次。
我需要在不同 formats/sizes 中生成多个图像副本。我可以在不为每个 format/size 重新打开源代码的情况下做到这一点吗?
举个例子:
# 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
,但它不会克隆图像对象。相反,它为转换器设置一个参数。我不知道这是否符合我的目的。
我找到了一种方法,看起来不错。
# 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 都将被裁剪,但每个只会转换一次。