`
ddddddddd
  • 浏览: 11670 次
  • 性别: Icon_minigender_1
  • 来自: 冥王星
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

用RMagick做验证码图形,文字显示不出来

阅读更多
用RMagick做了一个显示验证吗的图
在windows下显示一切正常,上传到linux服务器上后,图片显示出来了,有背景颜色,可是就是没有文字
请指点迷津,不胜感激。

引用
问题已经解决,后面说面了解决方法


class NoisyImage
  require 'RMagick'
  include Magick

  attr_reader :code, :code_image

  def initialize(length = 4)
    text_size = 33
    rand_height = 9
    colors = ['#FF0000', '#3300CC', '#FF3300', '#b50000', '#373000', '#f000f0', '##336600']
    validbglinecolors = ['#ABEFAB', '#FF99FF', '#CCCCFF', '#66FF66', '#CCFF33']
    validchars = (0..9).to_a
    dist = (5..30).to_a
    step = 8
    chars = []
    text_size_space = text_size * 0.8
    text_size_step = text_size * 0.6
    length.times {|x|
        chars << validchars[rand(validchars.size).ceil - 1].to_s
    }
    bglinecolor = validbglinecolors[rand(validbglinecolors.size).ceil - 1]
    image = Image.new(length * text_size_step + 10, text_size * 1.2, HatchFill.new('white', bglinecolor, dist[rand(dist.size - 1)]))
    text = Draw.new
    #使用字体文件和直接使用字体,或者不写font, font_family两个属性都是如图所示结果,linux下无字显示
    text.font = "fonts/" + ['times.ttf', 'arial.ttf', 'verdana.ttf', 'artro.ttf'].sort{rand}.pop 
    #text.font_family = ['times', 'sans', 'fixed', 'Verdana'].sort{rand}.pop
    text.font_weight = BoldWeight
    text.text(0, 0, ' ')

    chars.each {|char|
        text.annotate(image, 0, 0, step, text_size_space + rand(rand_height), char) {
            self.rotation = dist[rand(dist.size - 1).ceil]
            self.fill = colors[rand(colors.size - 1).ceil]
            self.pointsize = text_size - validchars[rand(rand_height).ceil]
        }
        step += text_size_step - rand(5)
    }
    text.draw(image)

    @code = chars.to_s()
    @code_image = image.to_blob{ self.format="JPG" }
  end
end



引用

原因是linux服务器下用的是fastcgi+apache,windows下测试用的是ruby webrick,而字体文件使用了相对路径,两者的路径是不同的,使用绝对路径就没有这个错误了
误:   text.font = "fonts/" + ['times.ttf', 'arial.ttf', 'verdana.ttf', 'artro.ttf'].sort{rand}.pop
正:   text.font = "/home/web/fonts/" + ['times.ttf', 'arial.ttf', 'verdana.ttf', 'artro.ttf'].sort{rand}.pop
  • 描述: 显示出来的图形,linux下是没有文字的。 windows下是正确的。
  • 大小: 9.6 KB
分享到:
评论
4 楼 ddddddddd 2007-11-03  
我安装的是windows下面的

因为时间太久,具体步骤回忆不起来了,但是过程还算顺利
大概步骤如下:
1、去http://rubyforge.org/frs/?group_id=12&release_id=15197
下载windows版本的,注意和自己的ruby版本对应
里面有个readme.html,有安装步骤。

2、安装过程如果出错,可以到
http://rmagick.rubyforge.org/install-faq.html
来查找,我遇到的几个问题,这里都有答案

安装好后,注意默认字体似乎是有问题的,没有中文的,你可以去google搜下,有很多解决方法,有人写好了xml,下载覆盖了安装目录的即可。 还有一个方法就是,不要直接在程序中指定字体,而是指定字体文件,这需要自己把字体文件和程序一起发布(字体文件在windows\fonts目录下有),实际上我上面程序用的就是后一种方法。

linux下不是我装的,我用的虚拟主机,没法装,但是上面没有字体设置,只能自己带自己文件用,所以我更推荐后面那种带自己发布的方法。

很抱歉前面没注意到,回复迟了
3 楼 simon_lin 2007-10-31  
您的RMagick是怎么装的?怎么我找了很多资料都装不成功,做好WINDOWS和LINUX的都说明一下,谢谢!
2 楼 ddddddddd 2007-10-09  
字体路径问题,已经解决。遇到同样问题的请参照主贴内说明。

低级错误,惭愧惭愧。
1 楼 ddddddddd 2007-10-08  
应该还是字体问题造成的,我用Magick.fonts查询了下linux上的字体,发现一个也没有。
windows下有字体。

现在把字体放置到了fonts目录下 fonts和app public等同级目录
windows似乎认这个目录下的字体文件(试过一些特殊字体)
但linux还是出不来……

line 24-25修改为:
text.font = "fonts/" + ['times.ttf', 'arial.ttf', 'verdana.ttf', 'artro.ttf'].sort{rand}.pop   
#text.font_family = ['times', 'sans', 'fixed', 'Verdana'].sort{rand}.pop 

相关推荐

    rmagick-2.3.0-x86-mswin32.gem

    `rmagick-2.3.0-x86-mswin32.gem` ...总的来说,`rmagick-2.3.0-x86-mswin32.gem` 是一个强大的工具,它扩展了Ruby的图像处理能力,使得开发者可以方便地创建各种图像应用,包括但不限于验证码生成、图像编辑和转换等。

    rmagick-2.16.0.gem

    安装redmine-3.2.3 ruby on rails 下的插件 rmagick 2.16.0 gem

    rails实现验证码实例

    2. **绘制验证码图像**:使用像` RMagick`或`Pillow`这样的图像处理库,创建一个新的图像并填充背景色。然后在图像上绘制随机生成的字符串,每次使用不同的字体、颜色和角度,以增加识别难度。 3. **扭曲和噪声**:...

    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版或更高版本。 您可以从获得...

    hornetseye-rmagick:WaSP眼的 RMagick 集成

    hornetseye-rmagick使用RMagick Ruby 扩展提供文件 I/O。 RMagick需要 ImageMagick 开发头文件。 如果您运行的是 Debian 或 (K)ubuntu,您可以像这样安装它们: $ sudo aptitude install libmagickwand-dev 要安装...

    kamcaptcha:Rails的验证码插件

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

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

    注意:根据Ruby China的使用,验证码看起来被OCR解析的可能性低于5%,并且验证码被破解。 建议您使用IP速率限制来增强保护。 注意:以Ruby China的使用来看,验证码大约有5%的概率被OCR读取解析导致验证码被破解...

    rmagick-2.13.1-x86-mingw32.gem

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

    ruby图片处理工具

    例如,以下是一个简单的示例,展示如何用 Rmagick 读取和显示一张图像: ```ruby require 'rmagick' image = Magick::Image.read('example.jpg').first image.display ``` 在这个例子中,`Magick::Image.read` ...

    Ruby-Ruby绑定ImageMagick

    8. **文字和图形绘制**:使用`annotate`方法,可以在图像上添加文本;通过`draw`方法,可以绘制线条、形状和其他矢量图形。 9. **批处理**:RMagick支持批量处理图像,你可以一次性对一组图像执行相同的操作。 10....

    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拥有的所有命令行...

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

    Ruby on Rails(简称Rails)是一种基于Ruby编程语言的开源Web应用程序...同时,对于RMagick,也要考虑使用更新的版本,因为它可能不支持最新的操作系统或Ruby版本。在实际操作中,应始终关注官方文档和社区维护状态。

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

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

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

    那里的大多数想法都相当简单(为线条设置粗体样式、添加标签、使用适当的字体),但有一些图像失真的想法,这使得任何图形看起来都是“铅笔画的”。 在那里,我只是在想“Ruby是最好的语言 evaaar,如果我能做同样...

    blurhash:将图像编码为一个小的字符串,可以将其保存在数据库中,并在API响应中返回,并在加载真实图像之前显示为模糊的预览

    使用它,您可以将图像编码为一个小的字符串,该字符串可以保存在数据库中,在API响应中返回并在加载真实图像之前显示为模糊的预览。 Blurhash由 DagÅgren)撰写。 安装 将此行添加到您的应用程序的Gemfile中: ...

    benchmark_driver-output-gruff:Benchmark_Driver插件以渲染条形图

    BenchmarkDriver :: Output :: Gruff 基准测试驱动程序插件,用于使用gruff.gem渲染图形。安装安装rmagick.gem的依赖项。 另请参阅: : # macOSbrew install imagemagick@6PKG_CONFIG_PATH=/usr/local/opt/...

Global site tag (gtag.js) - Google Analytics