ruby的生成随机验证码

网上找的使用ruby生成的随机验证码图片


require 'rubygems'
require 'RMagick'

class ValidationImage
include Magick
attr_reader :code, :image
Jiggle = 15
Wobble = 15

def initialize(len = 4)
chars = ('a'..'z').to_a + ('0'..'9').to_a
rand_chars = []
1.upto(len) {rand_chars.push(chars[rand(chars.length)])}#生成验证码

background_type = "netscape:" #彩条 "granite:" #花岗岩 "xc:#EDF7E7" #指定背景色 "null:" #纯黑
background = Magick::ImageList.new(background_type) #背景画布

canvas = Magick::ImageList.new #新建一个画布
canvas.new_image(32*len, 30, Magick::TextureFill.new(background)) #把背景加到画布上

gc = Magick::Draw.new #新建一个画笔
gc.font_family = 'times'
gc.pointsize = 20
cur = 10

#在画布上把验证码写上去?
rand_chars.each{|c|
gc.annotate(canvas, 0, 0, cur, 15+rand(Jiggle), c){
self.rotation = rand(10) > 5 ? rand(Wobble) : -rand(Wobble)
self.font_weight = rand(10) > 5 ? NormalWeight : BoldWeight
self.fill = 'green'
}
cur += 30
}

@code = rand_chars.to_s
@image = canvas.to_blob{
self.format="GIF"
}
end
end


v=ValidationImage.new
#生成图片
filename= File.new('c:\1.jpg',"w+")
filename.binmode

puts v.code

filename.puts v.image
filename.puts v.code

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值