From 492ac74819cd7efc2c92bfb948f7083095dac384 Mon Sep 17 00:00:00 2001 From: Thorsten Claus Date: Tue, 28 Jun 2022 21:22:29 +0200 Subject: Issue #8355: Adding webp as supported file format Converting all uploaded images to the webp format. --- app/uploaders/processed_image.rb | 2 +- app/uploaders/unprocessed_image.rb | 22 ++++++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) (limited to 'app/uploaders') diff --git a/app/uploaders/processed_image.rb b/app/uploaders/processed_image.rb index 79b61b9c7..5dfa6e5f0 100644 --- a/app/uploaders/processed_image.rb +++ b/app/uploaders/processed_image.rb @@ -12,7 +12,7 @@ class ProcessedImage < CarrierWave::Uploader::Base end def extension_allowlist - %w[jpg jpeg png gif] + %w[jpg jpeg png gif webp] end def filename diff --git a/app/uploaders/unprocessed_image.rb b/app/uploaders/unprocessed_image.rb index 6dad5f602..558202e3e 100644 --- a/app/uploaders/unprocessed_image.rb +++ b/app/uploaders/unprocessed_image.rb @@ -18,20 +18,34 @@ class UnprocessedImage < CarrierWave::Uploader::Base end def extension_allowlist - %w[jpg jpeg png gif] + %w[jpg jpeg png gif webp] end def filename - model.random_string + File.extname(@filename) if @filename + model.random_string + extension if @filename + end + + def extension + needs_converting? ? ".webp" : File.extname(@filename) + end + + def needs_converting? + extname = File.extname(@filename) + %w[.webp .gif].exclude?(extname) end process :basic_process def basic_process manipulate! do |img| - img.auto_orient - img.strip if strip_exif + img.combine_options do |i| + i.auto_orient + i.strip if strip_exif + end + img = yield(img) if block_given? + + img.format("webp") if needs_converting? img end end -- cgit v1.2.3