require 'rubygems'
require 'RMagick'
include Magick
class Captcha
RADIUS = 15
WIDTH = 100
HEIGHT = 50
COLOR = %w{blue yellow red white black rgb(143,143,1433) rgb(179,98,33) rgb(255,207,67) rgb(217,125,219) rgb(128,201,8)}
def self.draw_captcha()
center_x = rand((WIDTH-2*RADIUS))+RADIUS
center_y = rand((HEIGHT-2*RADIUS))+RADIUS
gc = Magick::Draw.new
map_gd = Magick::Image.read("public/images/captcha.gif").first
gc.fill_opacity(0)
arr = sample(COLOR.size-1,5)
# j = i = rand(COLOR.size)
gc.stroke(COLOR[arr[0]]).stroke_width(2)
x =rand(80)
y = rand(30)
gc.rectangle(x,y,x+20, y+20)
# i = rand(COLOR.size)
gc.stroke(COLOR[arr[1]]).stroke_width(2)
x = rand(60)
y= rand(20)
gc.polygon(x+20,y,x+5,y+10,x+20,y+20,x+35,y+10)
gc.stroke(COLOR[arr[2]]).stroke_width(2)
x = rand(60)
y = rand(30)
gc.polygon(x,y,x+15, y+20,x+28,y+5)
gc.stroke(COLOR[arr[3]]).stroke_width(2)
x = rand(70)
y = rand(30)
x =12 if x<10
y =12 if y<10
gc.circle(x,y, x+8, y+8)
gc.stroke(COLOR[arr[4]]).stroke_width(2)
# gc.arc(60,10,90,40, 0, 150)
# gc.arc(60,10,90,40, 180, 270)
gc.arc(center_x-RADIUS,center_y-RADIUS,center_x+RADIUS,center_y+RADIUS,60,120)
gc.arc(center_x-RADIUS,center_y-RADIUS,center_x+RADIUS,center_y+RADIUS,180,240)
gc.arc(center_x-RADIUS,center_y-RADIUS,center_x+RADIUS,center_y+RADIUS,300,350)
gc.draw(map_gd)
return map_gd.to_blob{self.format="JPG"},center_x,center_y
end
def self.parse_captcha(x,y,center_x,center_y,player)
x_ =(center_x -x)*(center_x-x)
y_ = (center_y-y)*(center_y-y)
distance = Math.sqrt(x_+y_)
if distance < RADIUS
player.captcha_date_time = Time.now
if Time.now - player.last_time_on_line > 3600
player.last_time_on_line = Time.now
ph = PlayerOnlineHour.find(:first,:conditions => ["player_id = ? AND date = ?",player.id,Date.today])
if ph == nil
ph = PlayerOnlineHour.new
ph.player_id = player.id
ph.date = Date.today
ph.online_hours = 0
end
if ph.online_hours == nil
ph.online_hours = 0
end
ph.online_hours += 1
ph.save!
end
player.save!
return true
else
return false
end
end
def self.parse_parameters(url,parameters)
str = ''
if url.nil?
return '/castle'
end
parameters.each{|key,value| str += key +'='+value+'&'} unless parameters.nil?
if url["controller"] =="quest"
url["controller"]="castle"
url["action"] = "index"
end
return '/'+url["controller"]+'/'+(url["action"].nil? ? "index" :url["action"]+'?'+str)
end
#rand the don't repeat nums.
def self.sample(n,m)
if m.zero?
[]
else
s = sample(n-1,m-1)
t = rand(n+1)
s.concat(s.include?(t) ? [n]:[t])
end
end
end
分享到:
相关推荐
rmagick-2.3.0-x86-mswin32.gem 用于图片验证码
安装redmine-3.2.3 ruby on rails 下的插件 rmagick 2.16.0 gem
RMagick-2.12.0-ImageMagick-6.5.6-8-Q8.rar 包含 rmagick-2.13.2.gem ImageMagick-6.5.6-8-Q8-windows-dll.exe RMagick-2.12.0.tar.gz rmagick-2.12.0-x86-mswin32.gem
rails 插件rmagick 2.10.0 gem
马吉克目录介绍RMagick是Ruby编程语言和ImageMagick图像处理库之间的接口。先决条件最新版本的RMagick需要具备这些先决条件。 操作系统Linux * BSD 苹果系统视窗其他* nix类系统Ruby2.3版或更高版本。 您可以从获得...
这是Rails应用程序的Captcha宝石,它通过C代码生成验证码图像。 注意:根据Ruby China的使用,验证码看起来被OCR解析的可能性低于5%,并且验证码被破解。 建议您使用IP速率限制来增强保护。 注意:以Ruby China的...
hornetseye-rmagick 作者: Jan Wedekind版权所有: 2010许可证: GPL 概要 这个 Ruby 扩展实现了必要的转换,以保存和加载存储在 {Hornetseye::MultiArray} 中的图像。 安装 hornetseye-rmagick使用RMagick Ruby 扩展...
验证码系统比ReCAPTCHA使用更少的荒谬图像。 Kamcaptcha有两个稍微独立的部分,一个用于构建要显示的单词图像的生成器,另一个用于检查提交内容的有效性的运行时配置。 产生影像 这是您在本地执行的操作,可能只是...
redmine的一个包文件,可以用来导出为pdf,图像的功能
jekyll-gallery-generator, 从目录中生成照片库的osm插件 库生成器这是一... 它使用 RMagick 创建缩略图。这个插件很简单。 它生成无分页。无子库和无描述的库。 查看我的图片库,了解它的外观。 用法通过运行 jekyll-
基于rmagick的rails 3的简单验证码实现 经过Rails 3.2.8的测试 安装 添加到Gemfile gem 'easy_captcha' gem 'rmagick' 对于Java,您可以使用 gem 'rmagick4j' 捆绑执行后 rails g easy_captcha: install 配置 ...
使用MiniMagick,ruby进程的内存仍然很小(它生成了ImageMagick的命令行程序mogrify,该程序也占用了一些内存,但是比RMagick小得多)。 请参阅正在 以下。 MiniMagick使您可以访问ImageMagick拥有的所有命令行...
s9splashgen - 启动画面生成器 介绍 Ruby 脚本s9splashgen自动为 iPhone 和/或 iPad 应用程序(iOS 7 及更高版本)生成所有必要大小的启动画面。 它使用imagemagick和 gem rmagick 。 安装 安装imagemagick和rmagick...
基于 RMagick 的双字幕模因生成器。 安装 您需要安装和 。 最简单的方法是使用 。 brew install ghostscript brew install --build-from-source imagemagick 然后安装gem! gem install memegen 用法 要查看可用...
精灵工厂(v1.7.1) Sprite Factory是一个ruby库,可用于生成 。 它将目录中的各个图像文件组合到... RMagick是最常用的镜像库,用于ubuntu的安装说明: $ sudo aptitude install imageMagick libMagickWand-dev $ su
雄oster Drosterize是将图像处理代码从Wolfram语言转换为Ruby的另一项实验。 以前是 ,看看。 当前实验的来源是( )的一篇名为“ 。 Drosterize会执行“ ”(自我,包括递归图像)。 这里有一些例子,后面是...
安装设置AWS CLI和凭证Rmagick 需要一些额外的库: sudo apt-get install imagemagick libmagickwand-dev 捆绑安装将环境var S3_BUCKET_NAME设置为要从中处理图像的任何存储桶运行耙图片:导入捆绑 exec rails ...
这是一个用于Ruby和图像的小型实验脚本。 它只需要一些图像并转换成“ -like”(手写效果)。 前: 后: 剧本背后的故事很简单。 我刚刚阅读了 Wolfram 人 Vitaliy Kaurov 的一篇出色的博客,他解释说,如何在 ...
Hans-CI用于嵌入式硬件上的持续集成官方网站: : 用户数先决条件通过软件包管理器安装操作系统依赖项:苹果系统brew install opencv imagemagick ninjasudo gem install specific_install和RMagick: sudo gem ...
RMagick是Ruby和ImageMagick之间的接口