浏览 4731 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-10-08
在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 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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 |
|
返回顶楼 | |
发表时间:2007-10-09
字体路径问题,已经解决。遇到同样问题的请参照主贴内说明。
低级错误,惭愧惭愧。 |
|
返回顶楼 | |
发表时间: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下不是我装的,我用的虚拟主机,没法装,但是上面没有字体设置,只能自己带自己文件用,所以我更推荐后面那种带自己发布的方法。 很抱歉前面没注意到,回复迟了 |
|
返回顶楼 | |