Class: Jekyll::Tags::ImageEncodeTag

Inherits:
Liquid::Tag
  • Object
show all
Includes:
ImageEncodeCache
Defined in:
lib/jekyll_image_encode.rb

Instance Method Summary collapse

Methods included from ImageEncodeCache

#cached_base64_codes, #cached_base64_codes=

Constructor Details

#initialize(tag_name, url, options) ⇒ ImageEncodeTag

Returns a new instance of ImageEncodeTag.



20
21
22
23
# File 'lib/jekyll_image_encode.rb', line 20

def initialize(tag_name, url, options)
  @url = url.strip
  super
end

Instance Method Details

#encode_imageObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/jekyll_image_encode.rb', line 29

def encode_image
  require 'open-uri'
  require 'base64'
  
  encoded_image = ''
  image_handle = open(@url)

  if self.cached_base64_codes.has_key? @url
    encoded_image = self.cached_base64_codes[@url]
  else
    # p "Caching #{@url} as local base64 string ..."
    encoded_image = Base64.strict_encode64(image_handle.read)
    self.cached_base64_codes.merge!(@url => encoded_image)
  end
  
  data_type = MimeMagic.by_magic(image_handle)
  image_handle.close

  "data:#{data_type};base64, #{encoded_image}"
end

#render(context) ⇒ Object



25
26
27
# File 'lib/jekyll_image_encode.rb', line 25

def render(context)
  encode_image
end