论坛首页 Ruby版 rails

Rmagick验证码

浏览 3551 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2006-12-26
 

class Part < ActiveRecord::Base

require 'RMagick'

require "cgi"

 

include Magick

attr_reader :code, :code_image  #类的2个属性

  Jiggle = 15

  Wobble = 15

def initialize(len)

  #chars = ('a'..'z').to_a-['a','e','i','o','u']

  code_array=[]

  codex=""

  rr=0

  1.upto(5) {

    rr=65+rand(25)

    code_array << rr

    }            #随机生成5个大写字母

  #code_array=[rand(rr).chr,rand(rr).chr,rand(rr).chr,rand(rr).chr]

  #1.upto(len) {code_array << chars[rand(chars.length)]}

  granite = Magick::ImageList.new('granite:')    #生成granite样式的背景

  canvas = Magick::ImageList.new    #定义一个画布

  canvas.new_image(24*4,20, Magick::TextureFill.new(granite))   #granite放画布上

  text = Magick::Draw.new    #文字

  #text.font_family = 'times'

  text.pointsize = 20                  #文字大小

  cur = 10

  code_array.each{|c|

     c=c.to_i

     c=c.chr

     codex=codex+c               #acs码(数字)转为字母

    #rand(10) > 5 ? rot=rand(Wobble):rot= -rand(Wobble)

    rand(10) > 5 ? weight = NormalWeight : weight = BoldWeight

    ra=1000

    while ra<100000

        ra=rand(999999)

    end

    rn='#'+ra.to_s

    text.annotate(canvas,20,20, cur,18,c){      #text对象放canvas

      self.rotation=rand(30)                     #旋转角度

      self.font_weight = weight

    

      self.fill = rn                              #text(文字)颜色

    }

    cur += 15

  }

  @code = codex                                #生成文字(字符串格式)

 

  @code_image = canvas.to_blob{              #生成图片(二进制格式)

    self.format="JPG"

  }

end

                            

  • 96c36536-9402-47bf-bd07-c8163377e2a4-thumb
  • 描述: 效果
  • 大小: 1.4 KB
   
最后更新时间:2007-01-15
有没有详细的使用方法?配合网页的.
   
0 请登录后投票
最后更新时间:2007-07-06
http://www.caiwangqin.com/post/413
这个详细。
   
0 请登录后投票
论坛首页 Ruby版 rails

跳转论坛:
JavaEye推荐