class Captcha::Image
Attributes
code[R]
data[R]
Public Class Methods
new(o)
click to toggle source
# File lib/captcha/image.rb, line 9 def initialize(o) generate_code o canvas = Magick::Image.new(o[:dimensions][:width], o[:dimensions][:height]) { self.background_color = o[:colors][:background] } text = Magick::Draw.new text.font = File.expand_path o[:ttf] text.pointsize = o[:letters][:points] cur = 0 @code.each { |c| text.annotate(canvas, 0, 0, cur, o[:letters][:baseline], c) { self.fill = o[:colors][:font] } cur += o[:letters][:width] } w = o[:wave][:wavelength] canvas = canvas.wave(o[:wave][:amplitude], rand(w.last - w.first) + w.first) canvas = canvas.implode(o[:implode]) @code = @code.to_s @data = canvas.to_blob { self.format = "JPG" } canvas.destroy! end
Private Instance Methods
generate_code(o)
click to toggle source
# File lib/captcha/image.rb, line 39 def generate_code(o) chars = ('a'..'z').to_a - o[:letters][:ignore] @code = [] 1.upto(o[:letters][:count]) do @code << chars[rand(chars.length)] end end