class Part < ActiveRecord::Base
require 'RMagick'
require "cgi"
include Magick
attr_reader :code, :code_image #类的2个属性
Jiggle = 15
Wobble = 15
def initialize(len)
#chars = ('a'..'z').to_a-['a','e','i','o','u']
code_array=[]
codex=""
rr=0
1.upto(5) {
rr=65+rand(25)
code_array << rr
} #随机生成5个大写字母
#code_array=[rand(rr).chr,rand(rr).chr,rand(rr).chr,rand(rr).chr]
#1.upto(len) {code_array << chars[rand(chars.length)]}
granite = Magick::ImageList.new('granite:') #生成granite样式的背景
canvas = Magick::ImageList.new #定义一个画布
canvas.new_image(24*4,20, Magick::TextureFill.new(granite)) #granite放画布上
text = Magick::Draw.new #文字
#text.font_family = 'times'
text.pointsize = 20 #文字大小
cur = 10
code_array.each{|c|
c=c.to_i
c=c.chr
codex=codex+c #acs码(数字)转为字母
#rand(10) > 5 ? rot=rand(Wobble):rot= -rand(Wobble)
rand(10) > 5 ? weight = NormalWeight : weight = BoldWeight
ra=1000
while ra<100000
ra=rand(999999)
end
rn='#'+ra.to_s
text.annotate(canvas,20,20, cur,18,c){ #text对象放canvas上
self.rotation=rand(30) #旋转角度
self.font_weight = weight
self.fill = rn #text(文字)颜色
}
cur += 15
}
@code = codex #生成文字(字符串格式)
@code_image = canvas.to_blob{ #生成图片(二进制格式)
self.format="JPG"
}
end |