Rails 6.1.4 - Ruby 3.0.1 - ActiveStorage 和 WebP 图像格式

发布于 2025-01-16 10:33:23 字数 546 浏览 0 评论 0 原文

没有关于如何设置 Rails 以使用 ActiveStorage 提供 WebP 图像的良好信息。

有人可以解释一下该怎么做吗?

我尝试:

application.rb

config.active_storage.web_image_content_types = %w(image/jpeg image/png image/webp 
image/jpg)

并在 View 中:

<% image_tag( f.image_1.variant(resize_to_limit: [800,600], format: :webp) ) %>

但这适用于开发(我看到 jpeg 的链接,但是当我使用鼠标右键并“将图像另存为”图像时另存为 .WebP

在生产中,我看到浏览器没有图像默认图标,并链接到 .jpg

RoR 已失效...

There is no good info about how to setup Rails for serving WebP images with ActiveStorage.

Can someone explain how to do it?

I try:

application.rb

config.active_storage.web_image_content_types = %w(image/jpeg image/png image/webp 
image/jpg)

And in View:

<% image_tag( f.image_1.variant(resize_to_limit: [800,600], format: :webp) ) %>

But this works on development ( I see link to jpeg but when I use right mouse button and "save image as" image is saved as .WebP

On production I see no image default icon for browser and link to .jpg

RoR is dead...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

ˇ宁静的妩媚 2025-01-23 10:33:23

我通过结合格式和转换来实现这一点。

image.variant(resize_to_limit: [800,600], convert: :webp, format: :webp)

然而,URL 中的文件名仍然是 .jpg,或者任何原始文件类型。还无法弄清楚如何解决这个问题。

I got this to work by combining format and convert.

image.variant(resize_to_limit: [800,600], convert: :webp, format: :webp)

The filename in the URL, however, is still .jpg, or whatever the original file type is. Haven't been able to figure out how to fix that yet.

时光清浅 2025-01-23 10:33:23

我正在使用 Rails 7,这对我来说就像一个魅力。

has_many_attached :images do |attachable|
  attachable.variant :thumb, {resize_to_limit: [500, 500], convert: :webp, saver: { subsample_mode: "on", strip: true, interlace: true, quality: 80 }}
end

我使用 this gem 作为我的图像处理库。 gem 'ruby-vips', '~>; 2.1', '>= 2.1.4'。

可以看到ruby-vips库可以调用的所有方法这里

I'm using Rails 7, and this works like a charm to me.

has_many_attached :images do |attachable|
  attachable.variant :thumb, {resize_to_limit: [500, 500], convert: :webp, saver: { subsample_mode: "on", strip: true, interlace: true, quality: 80 }}
end

I'm using this gem as my image processing library. gem 'ruby-vips', '~> 2.1', '>= 2.1.4'.

You can see all the methods that can be called for ruby-vips library here

去了角落 2025-01-23 10:33:23

可以使用“转换”

image.variant(resize_to_limit: [800,600], convert: :webp)

can use 'convert'

image.variant(resize_to_limit: [800,600], convert: :webp)
2025-01-23 10:33:23

使用格式,而不是转换。这对我有用

(article.image.variant(resize_to_fill: resize_size, format: 'webp')

Use format, not convert. It works for me

(article.image.variant(resize_to_fill: resize_size, format: 'webp')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文