为了能够拥有动态图像大小(是的。我知道)我想出了以下内容version
,它只是在每个请求上创建一个临时文件(日本人,愚蠢的我知道——[基于 args 将文件存储在缓存中?])
version :resized do
def url(*args)
width,height,gravity,region = args[0],args[1],args[2],args[3]
manipulate! do |img|
cols, rows = img[:dimensions]
img.combine_options do |cmd|
if width != cols || height != rows
scale = [width/cols.to_f, height/rows.to_f].max
cols = (scale * (cols + 0.5)).round
rows = (scale * (rows + 0.5)).round
cmd.resize "#{cols}x#{rows}"
end
cmd.gravity gravity
cmd.extent "#{width}x#{height}#{region}" if cols != width || rows != height
end
img = yield(img) if block_given?
img
end
convert "jpg"
super()
end
end
我遇到的问题是,由于我没有process
这个版本,它准复制了原始版本并将其用于“按需”操作。如果那个原始文件是一个 100MB 的 tiff,这会变得一团糟!所以现在我正在寻找一种方法来阻止该版本实际创建文件并使用不同版本的文件进行“按需”操作。有任何想法吗 ?