diff --git a/Gemfile b/Gemfile index ebcf6234..a3eec845 100644 --- a/Gemfile +++ b/Gemfile @@ -63,6 +63,7 @@ gem 'twilio-ruby' gem 'phonelib' gem 'dnsbl-client' gem 'minfraud' +gem 'image_optimizer' # apt install optipng jpegoptim group :development, :test do gem 'pry' diff --git a/Gemfile.lock b/Gemfile.lock index 804439d3..aeea4e37 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -142,6 +142,7 @@ GEM image_optim_pack (0.9.1.20221104-x86_64-linux) fspath (>= 2.1, < 4) image_optim (~> 0.19) + image_optimizer (1.9.0) image_size (3.2.0) in_threads (1.6.0) io-extra (1.4.0) @@ -362,6 +363,7 @@ DEPENDENCIES http image_optim image_optim_pack + image_optimizer io-extra ipaddress json (>= 2.3.0) diff --git a/workers/screenshot_worker.rb b/workers/screenshot_worker.rb index 53adc65a..567e4bd0 100644 --- a/workers/screenshot_worker.rb +++ b/workers/screenshot_worker.rb @@ -54,8 +54,15 @@ class ScreenshotWorker screenshot_path = File.join user_screenshots_path, File.dirname(path_for_screenshot) FileUtils.mkdir_p screenshot_path unless Dir.exist?(screenshot_path) + ImageOptimizer.new(base_image_tmpfile_path, level: 1).optimize FileUtils.cp base_image_tmpfile_path, File.join(user_screenshots_path, "#{path_for_screenshot}.png") + # Optimized for open graph link expanders + image = Rszr::Image.load base_image_tmpfile_path + image.resize! 1200, 630, crop: :n + image.save File.join(user_screenshots_path, "#{path_for_screenshot}.jpg"), quality: 85 + ImageOptimizer.new(File.join(user_screenshots_path, "#{path_for_screenshot}.jpg")).optimize + Site::SCREENSHOT_RESOLUTIONS.each do |res| width, height = res.split('x').collect {|r| r.to_i}