`
zhizedai
  • 浏览: 16032 次
  • 性别: 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

    rmagick-2.3.0-x86-mswin32.gem 用于图片验证码

    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有两个稍微独立的部分,一个用于构建要显示的单词图像的生成器,另一个用于检查提交内容的有效性的运行时配置。 产生影像 这是您在本地执行的操作,可能只是...

    rmagick-2.13.1-x86-mingw32.gem

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

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

    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

    drosterize:使用Ruby和RMagick自复制图像

    雄oster Drosterize是将图像处理代码从Wolfram语言转换为Ruby的另一项实验。 以前是 ,看看。 当前实验的来源是( )的一篇名为“ 。 Drosterize会执行“ ”(自我,包括递归图像)。 这里有一些例子,后面是...

    s3-pic-gallery:获取一个 S3 存储桶的图像并压缩它们并为简单的 Web 图像库生成缩略图

    安装设置AWS CLI和凭证Rmagick 需要一些额外的库: sudo apt-get install imagemagick libmagickwand-dev 捆绑安装将环境var S3_BUCKET_NAME设置为要从中处理图像的任何存储桶运行耙图片:导入捆绑 exec rails ...

    xkcdize:Ruby 和 RMagick 中类似 XKCD 的图片失真

    这是一个用于Ruby和图像的小型实验脚本。 它只需要一些图像并转换成“ -like”(手写效果)。 前: 后: 剧本背后的故事很简单。 我刚刚阅读了 Wolfram 人 Vitaliy Kaurov 的一篇出色的博客,他解释说,如何在 ...

    px4test:连续交付的测试脚本

    Hans-CI用于嵌入式硬件上的持续集成官方网站: : 用户数先决条件通过软件包管理器安装操作系统依赖项:苹果系统brew install opencv imagemagick ninjasudo gem install specific_install和RMagick: sudo gem ...

    Ruby-Ruby绑定ImageMagick

    RMagick是Ruby和ImageMagick之间的接口

Global site tag (gtag.js) - Google Analytics