module MemeMe::Meme

Attributes

image[RW]

Public Instance Methods

bottom_phrase() click to toggle source
# File lib/mememe/meme.rb, line 20
def bottom_phrase
  @bottom_phrase || ""
end
bottom_phrase=(phrase) click to toggle source
# File lib/mememe/meme.rb, line 24
def bottom_phrase=(phrase)
  @bottom_phrase = phrase
end
calculate_pointsize(text, pointsize) click to toggle source
# File lib/mememe/meme.rb, line 69
def calculate_pointsize text, pointsize
  if text.size > 20
    pointsize = pointsize - (text.size - 20) * 1.25
    pointsize = 28 if pointsize < 28
    pointsize.to_s
  else
    pointsize.to_s
  end
end
generate(path) click to toggle source
# File lib/mememe/meme.rb, line 28
def generate(path)
  raise ArgumentError, "MemeMe::Meme.generate requires a valid image path" unless @image && File.exists?(image)
  img = MiniMagick::Image.open(image)
  write_top_phrase img
  write_bottom_phrase img
  img.write(File.join(path, "#{name}#{File.extname(image)}"))
end
meme_text(text, c, config = {}) click to toggle source
# File lib/mememe/meme.rb, line 48
def meme_text(text, c, config = {})
  settings = {
    font: MemeMe.fonts[:impact],
    position: 'North',
    pointsize: 50,
    stroke_color: '#000',
    stroke_width: 2,
    color: '#FFF'
  }.merge! config

  settings[:pointsize] = calculate_pointsize text, settings[:pointsize]

  c.gravity settings[:position]
  c.font settings[:font]
  c.pointsize settings[:pointsize]
  c.stroke settings[:stroke_color]
  c.strokewidth settings[:stroke_width].to_s
  c.fill settings[:color]
  c.draw "text 0,0 '#{text.upcase}'"
end
name() click to toggle source
# File lib/mememe/meme.rb, line 8
def name
  @name || "meme"
end
top_phrase() click to toggle source
# File lib/mememe/meme.rb, line 12
def top_phrase
  @top_phrase || ""
end
top_phrase=(phrase) click to toggle source
# File lib/mememe/meme.rb, line 16
def top_phrase=(phrase)
  @top_phrase = phrase
end
write_bottom_phrase(img) click to toggle source
# File lib/mememe/meme.rb, line 42
def write_bottom_phrase(img)
  img.combine_options do |c|
    meme_text bottom_phrase, c, { position: 'South' }
  end
end
write_top_phrase(img) click to toggle source
# File lib/mememe/meme.rb, line 36
def write_top_phrase(img)
  img.combine_options do |c|
    meme_text top_phrase, c
  end
end