FEATURE: new 'strip image metadata' site setting

This commit is contained in:
Régis Hanol
2017-07-25 11:48:39 +02:00
parent 933711a771
commit c7c93e7159
8 changed files with 39 additions and 28 deletions

View File

@@ -48,14 +48,32 @@ class FileHelper
downloaded&.close
end
def self.optimize_image!(filename)
ImageOptim.new(
# GLOBAL
timeout: 15,
skip_missing_workers: true,
# PNG
optipng: { level: 2, strip: SiteSetting.strip_image_metadata },
advpng: false,
pngcrush: false,
pngout: false,
pngquant: false,
# JPG
jpegoptim: { strip: SiteSetting.strip_image_metadata ? "all" : "none" },
jpegtran: false,
jpegrecompress: false,
).optimize_image!(filename)
end
private
def self.images
@@images ||= Set.new %w{jpg jpeg png gif tif tiff bmp svg webp ico}
end
def self.images
@@images ||= Set.new %w{jpg jpeg png gif tif tiff bmp svg webp ico}
end
def self.images_regexp
@@images_regexp ||= /\.(#{images.to_a.join("|")})$/i
end
def self.images_regexp
@@images_regexp ||= /\.(#{images.to_a.join("|")})$/i
end
end

View File

@@ -1,8 +1,9 @@
require_dependency "file_helper"
task "images:compress" => :environment do
io = ImageOptim.new
images = Dir.glob("#{Rails.root}/app/**/*.png")
image_sizes = Hash[*images.map{|i| [i,File.size(i)]}.to_a.flatten]
io.optimize_images!(images) do |name, optimized|
FileHelper.optimize_images!(images) do |name, optimized|
if optimized
new_size = File.size(name)
puts "#{name} => from: #{image_sizes[name.to_s]} to: #{new_size}"

View File

@@ -237,7 +237,7 @@ class UploadCreator
def optimize!
OptimizedImage.ensure_safe_paths!(@file.path)
ImageOptim.new.optimize_image!(@file.path)
FileHelper.optimize_image!(@file.path)
extract_image_info!
rescue ImageOptim::Worker::TimeoutExceeded
Rails.logger.warn("ImageOptim timed out while optimizing #{@filename}")