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
分享到:
相关推荐
7. **验证码生成**:描述中提到的“用于图片验证码”,这表明RMagick可以用于创建随机的、包含扭曲文本的图像,常用于网站的身份验证,防止自动化的机器人操作。 在使用`rmagick-2.3.0-x86-mswin32.gem`之前,需要...
首先,我们需要一个字体配置文件来生成验证码中的随机字符。字体配置文件可以包含多个字体样式,用于增加验证码的复杂性和可读性。在Rails项目中,我们可以创建一个`fonts`目录,将所需的字体文件放入其中,然后在...
安装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有两个稍微独立的部分,一个用于构建要显示的单词图像的生成器,另一个用于检查提交内容的有效性的运行时配置。 产生影像 这是您在本地执行的操作,可能只是...
在这个特定的场景中,我们关注的是一个针对 Windows 操作系统的 Ruby Gem 安装包,它包含了 Rmagick 和 ImageMagick 这两个关键组件。 **Rmagick** 是一个 Ruby 绑定库,它提供了与流行的图像处理库 ImageMagick ...
redmine的一个包文件,可以用来导出为pdf,图像的功能
2. **图像处理**:应用可能使用了某种图像处理库,如`mini_magick`或`rmagick`,来分析上传图像的颜色,并从中提取主要颜色。 3. **颜色理论**:为了生成配色方案,开发者需要理解色彩理论,包括色相、饱和度和亮度...
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...
它允许Rails应用处理图像,如上传、缩略图生成等。 - `rails-2.3.3.gem`:这是Rails框架的一个版本。Rails的版本号代表了其功能特性和API的变化。2.3.3是较旧的版本,现代应用可能需要更高版本的Rails。 - `...
RMagick的安装通常涉及到两个步骤:首先,你需要在系统上安装ImageMagick,然后通过Ruby的Gem包管理器安装RMagick gem。ImageMagick的安装可能需要根据你的操作系统进行不同的配置,确保所有依赖项都已安装。安装...
基于 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