图像处理 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 的数据流管道