我有一个主动存储映像变体。
<%= image_tag model.logo_image.variant(resize_to_fit: [300, 200]) %>我正在尝试获取这个变体的width和height值(因为它们是未知的),以便在width和height HTML属性中使用。
我以为他们会在这里:
model.logo_image.variant(resize_to_fit: [300, 200]).processed.blob.metadata但是这给了我原始文件的元数据,而不是调整大小的变量。
{"identified"=>true, "width"=>800, "height"=>174, "analyzed"=>true}如何获得活动存储变体的维度?
发布于 2021-04-23 10:19:35
使用Rails 6.1,最后所有变量都存储在一个新的模型/数据库表中,并且每个变量都有一个Blob。如果此功能与您相关,请尝试升级。
在对象的深处,您可以找到变体blob,从而找到元数据!
尝试:
model.logo_image.
variant(resize_to_fit: [300, 200]).
processed.send(:record).image.blob.metadata但是,它第一次不能工作,当第一次调用时,它没有宽度/高度,因为AnalyzeJob将异步运行,它将“稍后”添加宽度/高度,这取决于您的队列设置。
如果可用,可以添加一个创建宽度、高度的图像的helper_method:
module ApplicationHelper
def image_tag_for_attachment_with_dimensions(variant, opts = {})
if variant.processed?
metadata = variant.processed.send(:record).image.blob.metadata
if metadata['width']
opts[:width] = metadata['width']
opts[:height] = metadata['height']
end
end
image_tag variant, opts
end
end
# usage:
= image_tag_for_attachment_with_dimensions model.logo_image.variant(resize_to_fit: [300, 200])https://stackoverflow.com/questions/61893089
复制相似问题