From edf618b21b87e6c499fa4f7396400d65dd0113d2 Mon Sep 17 00:00:00 2001 From: Denys Dvoriashyn Date: Tue, 30 Oct 2018 11:57:00 +0200 Subject: [PATCH 1/8] Add compressor --- lib/light_resizer.rb | 7 ++++++- lib/light_resizer/carrierwave_resize.rb | 2 +- lib/light_resizer/compressor.rb | 18 ++++++++++++++++++ lib/light_resizer/middleware.rb | 3 +-- lib/light_resizer/resizer.rb | 18 +++++++++++------- lib/light_resizer/version.rb | 2 +- light_resizer.gemspec | 3 ++- 7 files changed, 40 insertions(+), 13 deletions(-) create mode 100644 lib/light_resizer/compressor.rb diff --git a/lib/light_resizer.rb b/lib/light_resizer.rb index 5c36774..42a6847 100644 --- a/lib/light_resizer.rb +++ b/lib/light_resizer.rb @@ -1,5 +1,6 @@ require 'light_resizer/version' require 'light_resizer/resizer' +require 'light_resizer/compressor' require 'light_resizer/dimension_not_found' require 'light_resizer/middleware' require 'light_resizer/carrierwave_resize' @@ -11,9 +12,13 @@ module LightResizer include Configurations configurable Array, :allowed_dimensions + configurable Integer, :jpeg_quality + configurable Integer, :png_compression configuration_defaults do |default_config| default_config.allowed_dimensions = [] + default_config.jpeg_quality = 100 + default_config.png_compression = 0 end -end \ No newline at end of file +end diff --git a/lib/light_resizer/carrierwave_resize.rb b/lib/light_resizer/carrierwave_resize.rb index 5ad4ed6..57d38b9 100644 --- a/lib/light_resizer/carrierwave_resize.rb +++ b/lib/light_resizer/carrierwave_resize.rb @@ -18,4 +18,4 @@ def resized_image_path(width, height, with_crop) end end -end \ No newline at end of file +end diff --git a/lib/light_resizer/compressor.rb b/lib/light_resizer/compressor.rb new file mode 100644 index 0000000..b379aec --- /dev/null +++ b/lib/light_resizer/compressor.rb @@ -0,0 +1,18 @@ +# encoding: utf-8 + +require 'piet' + +module LightResizer + class Compressor + + def initialize(path_to_file) + @path_to_file = path_to_file + end + + def process + options = { quality: LightResizer.configuration.jpeg_quality, level: LightResizer.configuration.png_compression } + Piet.optimize(@path_to_file, options) + end + + end +end diff --git a/lib/light_resizer/middleware.rb b/lib/light_resizer/middleware.rb index 594cf5d..6388343 100644 --- a/lib/light_resizer/middleware.rb +++ b/lib/light_resizer/middleware.rb @@ -12,7 +12,6 @@ def call(env) unless resize_options.nil? resizer = LightResizer::Resizer.new(@public_path, resize_options) resizer.process - env['PATH_INFO'] = resizer.upload_path end @app.call(env) end @@ -24,4 +23,4 @@ def resize_url_regex end end -end \ No newline at end of file +end diff --git a/lib/light_resizer/resizer.rb b/lib/light_resizer/resizer.rb index 43fea22..b89b6d2 100644 --- a/lib/light_resizer/resizer.rb +++ b/lib/light_resizer/resizer.rb @@ -1,9 +1,8 @@ # encoding: utf-8 + module LightResizer class Resizer - IMAGE_EXTENSION = 'png' - def initialize(public_path, options) @public_path = public_path @options = options @@ -14,13 +13,19 @@ def process resize_or_crop create_directory save_image + compress_image end - def upload_path - @upload_path ||= "#{@options[:path]}.#{IMAGE_EXTENSION}" + protected + + def compress_image + LightResizer::Compressor.new(full_path).process end - protected + def compress_original_image + path_to_original_image = "#{@public_path}#{@options[:directory]}/#{@options[:image]}#{@options[:ext]}" + LightResizer::Compressor.new(path_to_original_image).process + end def image_exists? File.exists? full_path @@ -54,7 +59,6 @@ def create_directory end def save_image - image.format = IMAGE_EXTENSION image.write full_path end @@ -63,7 +67,7 @@ def image end def full_path - @full_path ||= "#{@public_path}#{upload_path}" + @full_path ||= "#{@public_path}#{@options}" end def width diff --git a/lib/light_resizer/version.rb b/lib/light_resizer/version.rb index 3955273..502f0ea 100644 --- a/lib/light_resizer/version.rb +++ b/lib/light_resizer/version.rb @@ -1,3 +1,3 @@ module LightResizer - VERSION = '0.2.0' + VERSION = '0.2.1' end \ No newline at end of file diff --git a/light_resizer.gemspec b/light_resizer.gemspec index dec71dc..ce81a90 100644 --- a/light_resizer.gemspec +++ b/light_resizer.gemspec @@ -21,5 +21,6 @@ Gem::Specification.new do |spec| spec.add_dependency 'rmagick' spec.add_dependency 'rack' spec.add_dependency 'configurations', '~> 2.2.0' - + spec.add_dependency 'piet' + spec.add_dependency 'piet-binary' end \ No newline at end of file From f3c95ca024747ffbeed9e669aabbbaa44c6d983f Mon Sep 17 00:00:00 2001 From: Denys Dvoriashyn Date: Wed, 31 Oct 2018 17:22:31 +0200 Subject: [PATCH 2/8] Change gravity type for resize --- lib/light_resizer/resizer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/light_resizer/resizer.rb b/lib/light_resizer/resizer.rb index b89b6d2..bcdf255 100644 --- a/lib/light_resizer/resizer.rb +++ b/lib/light_resizer/resizer.rb @@ -43,7 +43,7 @@ def check_allowed_dimension end def crop - image.resize_to_fill! width, height + image.resize_to_fill!(width, height, Magick::NorthGravity) end def resize From cb43ddab56dec4de31dc5e4e39e46e52143a5ff4 Mon Sep 17 00:00:00 2001 From: Denys Dvoriashyn Date: Mon, 5 Nov 2018 20:12:00 +0200 Subject: [PATCH 3/8] Set verbose to true --- lib/light_resizer/compressor.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/light_resizer/compressor.rb b/lib/light_resizer/compressor.rb index b379aec..ab3fb83 100644 --- a/lib/light_resizer/compressor.rb +++ b/lib/light_resizer/compressor.rb @@ -10,7 +10,7 @@ def initialize(path_to_file) end def process - options = { quality: LightResizer.configuration.jpeg_quality, level: LightResizer.configuration.png_compression } + options = { quality: LightResizer.configuration.jpeg_quality, level: LightResizer.configuration.png_compression, verbose: true } Piet.optimize(@path_to_file, options) end From e5a4ded11b604be3052b5b029aebb1ecc1732047 Mon Sep 17 00:00:00 2001 From: Denys Dvoriashyn Date: Mon, 26 Nov 2018 13:11:28 +0200 Subject: [PATCH 4/8] Temp commit to debug --- lib/light_resizer/compressor.rb | 3 ++- lib/light_resizer/resizer.rb | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/light_resizer/compressor.rb b/lib/light_resizer/compressor.rb index ab3fb83..ce249bf 100644 --- a/lib/light_resizer/compressor.rb +++ b/lib/light_resizer/compressor.rb @@ -11,7 +11,8 @@ def initialize(path_to_file) def process options = { quality: LightResizer.configuration.jpeg_quality, level: LightResizer.configuration.png_compression, verbose: true } - Piet.optimize(@path_to_file, options) + result = Piet.optimize(@path_to_file, options) + Rails.logger.debug "Optimize passsed with result: #{result}" end end diff --git a/lib/light_resizer/resizer.rb b/lib/light_resizer/resizer.rb index bcdf255..3000f19 100644 --- a/lib/light_resizer/resizer.rb +++ b/lib/light_resizer/resizer.rb @@ -9,11 +9,17 @@ def initialize(public_path, options) end def process + Rails.logger.debug "Inside process" return if image_exists? + Rails.logger.debug "After if" resize_or_crop + Rails.logger.debug "After resize_or_crop" create_directory + Rails.logger.debug "After create_directory" save_image + Rails.logger.debug "After save_image" compress_image + Rails.logger.debug "After compress_image, #{full_path}" end protected From 18d66fac580d0a0329a9486167ad6603e9278e4f Mon Sep 17 00:00:00 2001 From: Denys Dvoriashyn Date: Wed, 28 Nov 2018 17:33:28 +0200 Subject: [PATCH 5/8] TEmp commit for debug --- lib/light_resizer/middleware.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/light_resizer/middleware.rb b/lib/light_resizer/middleware.rb index 6388343..791e47b 100644 --- a/lib/light_resizer/middleware.rb +++ b/lib/light_resizer/middleware.rb @@ -8,8 +8,11 @@ def initialize(app, root) end def call(env) + Rails.logger.debug "Inside middleware call" resize_options = env['PATH_INFO'].match resize_url_regex + Rails.logger.debug "resize_options: #{resize_options}" unless resize_options.nil? + Rails.logger.debug "Inside middleware if" resizer = LightResizer::Resizer.new(@public_path, resize_options) resizer.process end From f7e39708052d9239129420731cf1d38f239c7045 Mon Sep 17 00:00:00 2001 From: Denys Dvoriashyn Date: Wed, 28 Nov 2018 18:43:28 +0200 Subject: [PATCH 6/8] Remove debugging --- lib/light_resizer/middleware.rb | 5 +---- lib/light_resizer/resizer.rb | 8 +------- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/lib/light_resizer/middleware.rb b/lib/light_resizer/middleware.rb index 791e47b..28bfecc 100644 --- a/lib/light_resizer/middleware.rb +++ b/lib/light_resizer/middleware.rb @@ -8,11 +8,8 @@ def initialize(app, root) end def call(env) - Rails.logger.debug "Inside middleware call" resize_options = env['PATH_INFO'].match resize_url_regex - Rails.logger.debug "resize_options: #{resize_options}" unless resize_options.nil? - Rails.logger.debug "Inside middleware if" resizer = LightResizer::Resizer.new(@public_path, resize_options) resizer.process end @@ -22,7 +19,7 @@ def call(env) protected def resize_url_regex - /^(?(?\/.+?)\/light_resizer\/(?crop\/)?(?\d+)x(?\d+)\/(?.+?))(?\.\w+)$/ + /^(?\/.+?)\/light_resizer\/(?crop\/)?(?\d+)x(?\d+)\/(?[^\/]+)$/ end end diff --git a/lib/light_resizer/resizer.rb b/lib/light_resizer/resizer.rb index 3000f19..e051815 100644 --- a/lib/light_resizer/resizer.rb +++ b/lib/light_resizer/resizer.rb @@ -9,17 +9,11 @@ def initialize(public_path, options) end def process - Rails.logger.debug "Inside process" return if image_exists? - Rails.logger.debug "After if" resize_or_crop - Rails.logger.debug "After resize_or_crop" create_directory - Rails.logger.debug "After create_directory" save_image - Rails.logger.debug "After save_image" compress_image - Rails.logger.debug "After compress_image, #{full_path}" end protected @@ -69,7 +63,7 @@ def save_image end def image - @image ||= ::Magick::Image.read("#{@public_path}#{@options[:directory]}/#{@options[:image]}#{@options[:ext]}").first + @image ||= ::Magick::Image.read("#{@public_path}#{@options[:directory]}/#{@options[:image]}").first end def full_path From ef5e92c0dfbfd28fa5f0437cf397bd87a0a7d86f Mon Sep 17 00:00:00 2001 From: Denys Dvoriashyn Date: Sun, 24 Feb 2019 10:32:12 +0200 Subject: [PATCH 7/8] Change pictures extension to webP --- lib/light_resizer/middleware.rb | 3 ++- lib/light_resizer/resizer.rb | 13 ++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/light_resizer/middleware.rb b/lib/light_resizer/middleware.rb index 28bfecc..c9c420a 100644 --- a/lib/light_resizer/middleware.rb +++ b/lib/light_resizer/middleware.rb @@ -12,6 +12,7 @@ def call(env) unless resize_options.nil? resizer = LightResizer::Resizer.new(@public_path, resize_options) resizer.process + env['PATH_INFO'] = resizer.upload_path end @app.call(env) end @@ -19,7 +20,7 @@ def call(env) protected def resize_url_regex - /^(?\/.+?)\/light_resizer\/(?crop\/)?(?\d+)x(?\d+)\/(?[^\/]+)$/ + /^(?(?\/.+?)\/light_resizer\/(?crop\/)?(?\d+)x(?\d+)\/(?.+?))(?\.\w+)$/ end end diff --git a/lib/light_resizer/resizer.rb b/lib/light_resizer/resizer.rb index e051815..0580710 100644 --- a/lib/light_resizer/resizer.rb +++ b/lib/light_resizer/resizer.rb @@ -3,6 +3,8 @@ module LightResizer class Resizer + IMAGE_EXTENSION = 'webp' + def initialize(public_path, options) @public_path = public_path @options = options @@ -16,6 +18,10 @@ def process compress_image end + def upload_path + @upload_path ||= "#{@options[:path]}.#{IMAGE_EXTENSION}" + end + protected def compress_image @@ -59,17 +65,22 @@ def create_directory end def save_image + image.format = IMAGE_EXTENSION image.write full_path end def image - @image ||= ::Magick::Image.read("#{@public_path}#{@options[:directory]}/#{@options[:image]}").first + @image ||= ::Magick::Image.read("#{@public_path}#{@options[:directory]}/#{@options[:image]}#{@options[:ext]}").first end def full_path @full_path ||= "#{@public_path}#{@options}" end + def full_path + @full_path ||= "#{@public_path}#{upload_path}" + end + def width @width ||= @options[:width].to_i end From f2aaab9a8c51d7e2fcca3404f1828be07c7688ab Mon Sep 17 00:00:00 2001 From: Denys Dvoriashyn Date: Sun, 24 Feb 2019 22:52:23 +0200 Subject: [PATCH 8/8] Change images extension to JPEG --- lib/light_resizer/resizer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/light_resizer/resizer.rb b/lib/light_resizer/resizer.rb index 0580710..e61904e 100644 --- a/lib/light_resizer/resizer.rb +++ b/lib/light_resizer/resizer.rb @@ -3,7 +3,7 @@ module LightResizer class Resizer - IMAGE_EXTENSION = 'webp' + IMAGE_EXTENSION = 'jpeg' def initialize(public_path, options) @public_path = public_path