作者shelary (台中喵小咩)
看板Ruby
标题Re: [问题] 验证图片的产生
时间Sat Sep 8 12:13:58 2007
最後还是自己写了一个...因为那些套件感觉都不好用
我是用 GD2 去画..所以要先安装 gem gd2
def captcha
# 图宽
width = 180
# 图高
height = 60
# 背景的杂讯数量
noise = 50
# 验证码
code = 'ABCD'
# 建立新画布
img = GD2::Image.new(width, height)
# 涂满背景色(白色)
img.draw { |canvas|
canvas.color = GD2::Color[255, 255, 255]
canvas.rectangle(0, 0, img.width - 1, img.height - 1, true)
}
# 画星星杂讯
noise.times { |i|
img.draw { |canvas|
canvas.move_to(rand(width-1), rand(height-1))
canvas.color = GD2::Color[150+rand(105), 150+rand(105), 150+rand(105)]
canvas.font = GD2::Font::TrueType.new('cour.ttf', 20)
canvas.text('* *', rand(10))
}
}
# 画验证码(乱数颜色,乱数位置,乱数角度)
clen = code.length
clen.times
do |i|
img.draw { |canvas|
fw = (width - 20) / clen
canvas.move_to(10+(i*fw+rand(7)), rand((height-30)/2)+30)
canvas.color = GD2::Color[50+rand(150), 50+rand(150), 50+rand(150)]
canvas.font = GD2::Font::TrueType.new('CENTURY.TTF', 30)
canvas.text("#{code[i,1]}", (rand(10).to_f/10.0)-0.5)
}
end
# 输出成 JPEG
send_data img.jpeg(40), :type => 'image/jpeg', :disposition => 'inline'
end
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.225.163.112
※ 编辑: shelary 来自: 61.225.163.112 (09/08 12:15)
1F:推 godfat:XD 09/08 13:10
2F:推 janyfor:差个题外话...有人知道怎麽读取图片的长跟宽吗? 09/08 16:34
3F:推 godfat:查手册吧,我知道 RMagick 可以 09/08 16:40