图像处理 gem 在 GCS 中创建调整大小的文件

Posted

技术标签:

【中文标题】图像处理 gem 在 GCS 中创建调整大小的文件【英文标题】:Image-processing gem creates resized file in 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 存储桶中。所以我最终在我的桶中得到了正常尺寸的照片和调整大小的照片。我怎样才能避免这种情况?

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于图像处理 gem 在 GCS 中创建调整大小的文件的主要内容,如果未能解决你的问题,请参考以下文章

Qt,Designer 在scrollArea 中创建scrollAreaWidgetContents,我无法调整图像标签的大小

如何在 Python 中创建从 Pub/Sub 到 GCS 的数据流管道

ActiveX - 控件的大小调整问题,在 .NET 中创建

在 PHP 中创建文件进度条

如何在 tkinter 中创建一个自调整大小的按钮网格?

在 Xcode 界面构建器中创建动态调整大小的 UILabel