`
zhizedai
  • 浏览: 16633 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

rmagick 生成验证码

    博客分类:
  • ruby
阅读更多
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

    7. **验证码生成**:描述中提到的“用于图片验证码”,这表明RMagick可以用于创建随机的、包含扭曲文本的图像,常用于网站的身份验证,防止自动化的机器人操作。 在使用`rmagick-2.3.0-x86-mswin32.gem`之前,需要...

    rails实现验证码实例

    首先,我们需要一个字体配置文件来生成验证码中的随机字符。字体配置文件可以包含多个字体样式,用于增加验证码的复杂性和可读性。在Rails项目中,我们可以创建一个`fonts`目录,将所需的字体文件放入其中,然后在...

    rmagick-2.16.0.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.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

    rmagick-2.10.0.gem

    rails 插件rmagick 2.10.0 gem

    rmagick:ImageMagick的Ruby绑定

    马吉克目录介绍RMagick是Ruby编程语言和ImageMagick图像处理库之间的接口。先决条件最新版本的RMagick需要具备这些先决条件。 操作系统Linux * BSD 苹果系统视窗其他* nix类系统Ruby2.3版或更高版本。 您可以从获得...

    rucaptcha:用于Rails应用程序的Captcha gem。 没有依赖关系。 没有ImageMagick,没有RMagick

    这是Rails应用程序的Captcha宝石,它通过C代码生成验证码图像。 注意:根据Ruby China的使用,验证码看起来被OCR解析的可能性低于5%,并且验证码被破解。 建议您使用IP速率限制来增强保护。 注意:以Ruby China的...

    hornetseye-rmagick:WaSP眼的 RMagick 集成

    hornetseye-rmagick 作者: Jan Wedekind版权所有: 2010许可证: GPL 概要 这个 Ruby 扩展实现了必要的转换,以保存和加载存储在 {Hornetseye::MultiArray} 中的图像。 安装 hornetseye-rmagick使用RMagick Ruby 扩展...

    kamcaptcha:Rails的验证码插件

    验证码系统比ReCAPTCHA使用更少的荒谬图像。 Kamcaptcha有两个稍微独立的部分,一个用于构建要显示的单词图像的生成器,另一个用于检查提交内容的有效性的运行时配置。 产生影像 这是您在本地执行的操作,可能只是...

    ruby图片处理工具

    在这个特定的场景中,我们关注的是一个针对 Windows 操作系统的 Ruby Gem 安装包,它包含了 Rmagick 和 ImageMagick 这两个关键组件。 **Rmagick** 是一个 Ruby 绑定库,它提供了与流行的图像处理库 ImageMagick ...

    rmagick-2.13.1-x86-mingw32.gem

    redmine的一个包文件,可以用来导出为pdf,图像的功能

    从图像 生成 Bootstrap配色方案的 Rails 应用程序_css_ruby_html_代码_下载

    2. **图像处理**:应用可能使用了某种图像处理库,如`mini_magick`或`rmagick`,来分析上传图像的颜色,并从中提取主要颜色。 3. **颜色理论**:为了生成配色方案,开发者需要理解色彩理论,包括色相、饱和度和亮度...

    jekyll-gallery-generator, 从目录中生成照片库的osm插件.zip

    jekyll-gallery-generator, 从目录中生成照片库的osm插件 库生成器这是一... 它使用 RMagick 创建缩略图。这个插件很简单。 它生成无分页。无子库和无描述的库。 查看我的图片库,了解它的外观。 用法通过运行 jekyll-

    easy_captcha:验证码插件(Rails)

    基于rmagick的rails 3的简单验证码实现 经过Rails 3.2.8的测试 安装 添加到Gemfile gem 'easy_captcha' gem 'rmagick' 对于Java,您可以使用 gem 'rmagick4j' 捆绑执行后 rails g easy_captcha: install 配置 ...

    minimagick:RMagick的迷你替代品

    使用MiniMagick,ruby进程的内存仍然很小(它生成了ImageMagick的命令行程序mogrify,该程序也占用了一些内存,但是比RMagick小得多)。 请参阅正在 以下。 MiniMagick使您可以访问ImageMagick拥有的所有命令行...

    s9splashgen:适用于 iPhone 和 iPad(iOS 7 及更高版本)的启动画面生成器

    s9splashgen - 启动画面生成器 介绍 Ruby 脚本s9splashgen自动为 iPhone 和/或 iPad 应用程序(iOS 7 及更高版本)生成所有必要大小的启动画面。 它使用imagemagick和 gem rmagick 。 安装 安装imagemagick和rmagick...

    安装Ruby On Rails所需的部分资源

    它允许Rails应用处理图像,如上传、缩略图生成等。 - `rails-2.3.3.gem`:这是Rails框架的一个版本。Rails的版本号代表了其功能特性和API的变化。2.3.3是较旧的版本,现代应用可能需要更高版本的Rails。 - `...

    Ruby-Ruby绑定ImageMagick

    RMagick的安装通常涉及到两个步骤:首先,你需要在系统上安装ImageMagick,然后通过Ruby的Gem包管理器安装RMagick gem。ImageMagick的安装可能需要根据你的操作系统进行不同的配置,确保所有依赖项都已安装。安装...

    memegen:两个标题的模因生成器 CLI

    基于 RMagick 的双字幕模因生成器。 安装 您需要安装和 。 最简单的方法是使用 。 brew install ghostscript brew install --build-from-source imagemagick 然后安装gem! gem install memegen 用法 要查看可用...

    sprite-factory:自动CSS Sprite生成器

    精灵工厂(v1.7.1) Sprite Factory是一个ruby库,可用于生成 。 它将目录中的各个图像文件组合到... RMagick是最常用的镜像库,用于ubuntu的安装说明: $ sudo aptitude install imageMagick libMagickWand-dev $ su

Global site tag (gtag.js) - Google Analytics