网上找的使用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
分享到:
相关推荐
1. **生成随机字符串**:在Ruby中,可以使用`SecureRandom`库来生成随机字符串。例如,生成4位数字的验证码: ```ruby SecureRandom.random_number(10000).to_s.rjust(4, '0') ``` 2. **绘制验证码图像**:使用...
1. **生成随机验证码**:该包可以生成各种类型的随机验证码,包括数字、字母或者两者的组合,还可以自定义长度和样式,以确保验证码的复杂性和安全性。 2. **图像生成**:`Package captcha`能够生成高质量的验证码...
1. 生成随机文本。 2. 创建一个新的图像对象。 3. 在图像上画出随机文本,应用扭曲和变形以增加识别难度。 4. 添加噪声或其他干扰元素。 5. 将图像保存到磁盘供用户识别。 总的来说,`rmagick-2.3.0-x86-mswin32....
1. 生成验证码:在用户请求验证时,服务器生成一个随机的验证码,并存储在会话或数据库中。 2. 发送验证码:使用Kavenegar API发送短信,将验证码通过短信发送到用户手机。 3. 用户输入验证:用户收到验证码后输入,...
在Rails中,可以使用第三方库如`gem 'recaptcha'`来集成谷歌的reCAPTCHA服务,或者创建自定义的验证码生成器,通过随机字符或图片实现。 4. **数据查询**:Rails的ActiveRecord层提供了强大的查询接口,如`where`、...
6. **试题库管理**:系统应支持试题的创建、编辑、分类和随机抽取,可能需要用到算法来实现随机组合试题。 7. **自动化评分**:对于客观题,系统可以自动批改;对于主观题,可能需要AI辅助评分或人工批阅功能。 8....
有时,这些数据可能来自预定义的列表或随机生成器。 3. 验证码识别:许多网站使用验证码来防止自动化注册,因此工具可能包含OCR技术或者集成第三方验证码解决服务来自动识别和输入验证码。 4. 邮箱验证:Hotmail/...
凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码) 15个目标文件 摘要:Java源码,初学实例,基于EJB的真实...