首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取活动存储变量的元数据

获取活动存储变量的元数据
EN

Stack Overflow用户
提问于 2020-05-19 14:06:46
回答 1查看 1.7K关注 0票数 14

我有一个主动存储映像变体。

代码语言:javascript
复制
<%= image_tag model.logo_image.variant(resize_to_fit: [300, 200]) %>

我正在尝试获取这个变体的widthheight值(因为它们是未知的),以便在widthheight HTML属性中使用。

我以为他们会在这里:

代码语言:javascript
复制
model.logo_image.variant(resize_to_fit: [300, 200]).processed.blob.metadata

但是这给了我原始文件的元数据,而不是调整大小的变量。

代码语言:javascript
复制
{"identified"=>true, "width"=>800, "height"=>174, "analyzed"=>true}

如何获得活动存储变体的维度?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-23 10:19:35

使用Rails 6.1,最后所有变量都存储在一个新的模型/数据库表中,并且每个变量都有一个Blob。如果此功能与您相关,请尝试升级。

在对象的深处,您可以找到变体blob,从而找到元数据!

尝试:

代码语言:javascript
复制
model.logo_image.
 variant(resize_to_fit: [300, 200]).
 processed.send(:record).image.blob.metadata

但是,它第一次不能工作,当第一次调用时,它没有宽度/高度,因为AnalyzeJob将异步运行,它将“稍后”添加宽度/高度,这取决于您的队列设置。

如果可用,可以添加一个创建宽度、高度的图像的helper_method:

代码语言:javascript
复制
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])
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61893089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档