Class: JekyllRecker::Generators::ImageResize
- Inherits:
-
Jekyll::Generator
- Object
- Jekyll::Generator
- JekyllRecker::Generators::ImageResize
- Includes:
- Mixins::Logging
- Defined in:
- lib/jekyll_recker/generators.rb
Overview
Image Resize Generator
Instance Method Summary collapse
- #generate(site) ⇒ Object
- #image?(file) ⇒ Boolean
- #images ⇒ Object
- #resizeable_images ⇒ Object
- #too_big?(width, height) ⇒ Boolean
Methods included from Mixins::Logging
Instance Method Details
#generate(site) ⇒ Object
12 13 14 15 16 17 18 19 20 |
# File 'lib/jekyll_recker/generators.rb', line 12 def generate(site) @site = site logger.info 'checking images' resizeable_images.each do |f, d| logger.info "resizing #{f} to fit #{d}" image = MiniMagick::Image.new(f) image.resize d end end |
#image?(file) ⇒ Boolean
22 23 24 |
# File 'lib/jekyll_recker/generators.rb', line 22 def image?(file) ['.jpg', 'jpeg', '.png', '.svg'].include? File.extname(file) end |
#images ⇒ Object
30 31 32 |
# File 'lib/jekyll_recker/generators.rb', line 30 def images @site.static_files.collect(&:path).select { |f| image?(f) } end |
#resizeable_images ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/jekyll_recker/generators.rb', line 34 def resizeable_images with_sizes = images.map { |f| [f, FastImage.size(f)].flatten } with_sizes.select! { |f| too_big?(f[1], f[2]) } with_sizes.map do |f, w, h| dimensions = if w > h '800x600' else '600x800' end [f, dimensions] end end |
#too_big?(width, height) ⇒ Boolean
26 27 28 |
# File 'lib/jekyll_recker/generators.rb', line 26 def too_big?(width, height) width > 800 || height > 800 end |