module Placeimg::ViewHelpers

Public Instance Methods

placeholder(details = nil) click to toggle source
# File lib/placeimg/view_helpers.rb, line 8
def placeholder(details = nil)
  details         ||= {}
  details[:bg]    ||= '#ccc'
  details[:fg]    ||= '#777'
  details[:h]     ||= 250
  details[:w]     ||= 250
  details[:class] ||= ""
  details[:id]    ||= ""

  details[:h] = details[:h].to_i
  details[:w] = details[:w].to_i

  img = Image.new(details[:w], details[:h]) {
    self.background_color = details[:bg]
    self.format = "PNG"
  }

  if details[:h] > details[:w]
    font_size = (details[:w] / 5).ceil
  else
    font_size = (details[:h] / 5).ceil
  end

  if font_size >= 10
    txt = Draw.new

    img.annotate(txt, 0,0,0,0, "#{details[:w].to_s}x#{details[:h].to_s}") {
      txt.gravity = Magick::CenterGravity
      txt.pointsize = font_size
      txt.fill = details[:fg]
    }
  end

  data_uri = Base64.encode64(img.to_blob).gsub(/\n/, "")
  output = '<img width="%s" height="%s" alt="placeholder" src="data:image/png;base64,%s" class="%s" id="%s">' % [details[:w].to_s, details[:h].to_s, data_uri, details[:class], details[:id]]
  raw output
end