class MiddlemanSimpleThumbnailer::Image
Attributes
img_path[RW]
middleman_config[RW]
resize_to[RW]
Public Class Methods
new(img_path, resize_to, app, options_hash)
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 9 def initialize(img_path, resize_to, app, options_hash) @img_path = img_path @resize_to = resize_to @middleman_config = app.config @app = app @options = options_hash end
Public Instance Methods
base64_data()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 25 def base64_data prepare_thumbnail Base64.strict_encode64(File.read(cached_resized_img_abs_path)) end
cached_resized_img_abs_path()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 60 def cached_resized_img_abs_path File.join(cache_dir, middleman_abs_path).gsub(image_name, resized_image_name).split('.').tap { |a| a.insert(-2, image_checksum) }.join('.') end
middleman_abs_path()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 56 def middleman_abs_path img_path.start_with?('/') ? img_path : File.join(images_dir, img_path) end
middleman_resized_abs_path()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 52 def middleman_resized_abs_path middleman_abs_path.gsub(image_name, resized_image_name) end
mime_type()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 17 def mime_type image.mime_type end
prepare_thumbnail()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 30 def prepare_thumbnail unless cached_thumbnail_available? resize! save_cached_thumbnail end end
render()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 37 def render prepare_thumbnail File.read(cached_resized_img_abs_path) end
resized_img_abs_path()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 48 def resized_img_abs_path File.join(build_dir, middleman_abs_path).gsub(image_name, resized_image_name) end
resized_img_path()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 21 def resized_img_path img_path.gsub(image_name, resized_image_name) end
save!()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 43 def save! prepare_thumbnail FileUtils.copy_file(cached_resized_img_abs_path, resized_img_abs_path) end
Private Instance Methods
abs_path()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 96 def abs_path File.join(source_dir, middleman_abs_path) end
build_dir()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 118 def build_dir middleman_config[:build_dir] end
cache_dir()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 122 def cache_dir File.absolute_path(@options.cache_dir, @app.root) end
cached_thumbnail_available?()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 100 def cached_thumbnail_available? File.exist?(cached_resized_img_abs_path) end
image()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 75 def image @image ||= MiniMagick::Image.open(abs_path) end
image_checksum()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 79 def image_checksum @image_checksum ||= Digest::SHA2.file(abs_path).hexdigest[0..16] end
image_name()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 83 def image_name File.basename(abs_path) end
images_dir()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 114 def images_dir middleman_config[:images_dir] end
original_mtime()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 87 def original_mtime File.mtime abs_path end
resize!()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 68 def resize! unless @already_resized image.resize(resize_to) @already_resized = true end end
resized_image_name()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 91 def resized_image_name image_name.split('.').tap { |a| a.insert(-2, resize_to) }.join('.') # add resize_to sufix .gsub(/[%@!<>^]/, '>' => 'gt', '<' => 'lt', '^' => 'c') # sanitize file name end
save_cached_thumbnail()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 104 def save_cached_thumbnail FileUtils.mkdir_p(File.dirname(cached_resized_img_abs_path)) image.write(cached_resized_img_abs_path) File.utime(original_mtime, original_mtime, cached_resized_img_abs_path) end
source_dir()
click to toggle source
# File lib/middleman-simple-thumbnailer/image.rb, line 110 def source_dir File.absolute_path(middleman_config[:source], @app.root) end