【问题标题】:Image-processing gem creates resized file in GCS图像处理 gem 在 GCS 中创建调整大小的文件
【发布时间】:2022-01-02 06:32:35
【问题描述】:

我有 #has_many_attached :photos 的 Item 对象。我的活动存储服务是 GCS。我为 Item 创建了一个#thumbnail() 实例方法。像这样:

def thumbnail(photo)
    photo.variant(resize_and_pad: [400, 400, gravity: 'center', background: '#3D4453'])
end 

我在 items show.html.erb 文件中将其称为:

 <% @item.photos.each do |photo| %>
    <%= image_tag(@item.thumbnail(photo)) %>
<% end %>

但是,这会导致将调整大小的照片上传到 GCS 存储桶中。所以我最终在我的桶中得到了正常尺寸的照片和调整大小的照片。我怎样才能避免这种情况?

【问题讨论】:

    标签: ruby-on-rails image-processing google-cloud-storage imagemagick gcs


    【解决方案1】:

    根据variants 的 ActiveStorage documentation,预期行为是将变体上传到您正在使用的存储服务(在本例中为 GCS),然后返回变体 URL 以供在您的应用程序中使用:

    这将检查变体是否已被处理并上传到服务,如果是,则将其返回。否则它将执行转换,将变体上传到服务,然后再次返回自身。

    这个相关的thread 探讨了拥有变体和原始文件的这种行为,它归结为构建功能以删除变体文件,因为 API 似乎不支持它。对于删除特定的变体文件,另一个question 解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2016-12-13
      • 2013-11-20
      • 1970-01-01
      • 2011-08-20
      • 2010-12-04
      • 1970-01-01
      • 1970-01-01
      • 2014-11-27
      • 2020-12-18
      相关资源
      最近更新 更多