【问题标题】:Extracting image dimensions in the background with Shrine使用 Shrine 提取背景中的图像尺寸
【发布时间】:2019-05-23 19:29:42
【问题描述】:

我已经使用 Shrine 设置了直接上传到 S3。这很好用。其中,我启用了以下插件:

Shrine.plugin :backgrounding
Shrine.plugin :store_dimensions 
Shrine.plugin :restore_cached_data

如果我错了,请纠正我,但图像尺寸提取似乎是同步完成的。如果我让用户通过 Uppy 批量上传图片然后全部持久化,这似乎需要很长时间。

我想做的是异步执行图像尺寸提取 - 我不需要可用于缓存文件的尺寸。如果可能的话,我想在文件被提升到商店时在后台执行此操作。有办法吗?

【问题讨论】:

    标签: ruby shrine


    【解决方案1】:

    我让这个工作的方式是使用:refresh_metadata 插件,而不是我最初使用的:restore_cached_data。感谢 Janko pointing me 朝着正确的方向发展。

    阅读源代码提供了一些有用的见解。 :store_dimensions 插件本身不提取尺寸 - 它 adds 宽度和高度到元数据哈希,因此当 Shrine 的基类 requests metadata 时,它们也会被提取。

    通过使用:restore_cached_data,每项作业都会执行此操作。 :restore_cached_data uses :refresh_metadata 在内部,因此我们可以使用该知识仅在文件提升到商店时调用它。

    我在初始化器中设置了:backgrounding 和:store_dimensions,因此最终的上传器可以简化为:

    class ImageUploader < Shrine
      plugin :refresh_metadata
      plugin :processing
    
      process(:store) do |io, context|
        io.refresh_metadata!(context)
        io
      end
    end
    

    这种方式持久化我们从 Uppy 获得的数据非常快,我们让后台作业在文件提升到存储时提取维度,以便以后使用。

    最后,如果您有关于 Shrine 的问题,我强烈推荐其专用的Google Group。感谢 Janko 不仅创造了一款令人惊叹的软件(说真的,请阅读源代码),而且感谢他对支持社区的奉献。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多