1
내 응용 프로그램에는 "색상", "임의의 텍스트", "배경"과 같은 매개 변수를 수신하는 TrueType 및 OpenType 파일에서 이미지를 생성하는 방법이있는 컨트롤러가 있습니다. 글꼴 이름은 공백을 포함하지 않는Rmagick을 사용하여 글꼴 이미지를 생성하려면 어떻게해야합니까?
def imagefont
font = Font.find params[:font]
file = File.basename font.file, File.extname(font.file)
fontfile = File.path(Pathname.new("public/downloads/#{font.name.slice(0,1).capitalize}/#{file}/#{font.file}"))
options = {
:max_width => 240,
:text_color => params[:color],
:font_size => 35,
:text => params[:text],
:bg_color => params[:background],
:font => fontfile
}
if File.exists?(options[:font])
canvas = Magick::Image.new 50, 50
image = Magick::Draw.new
begin
image.annotate(canvas, 0, 0, 0, 0, options[:text]) do
image.pointsize = options[:font_size]
image.font = options[:font]
end
metrics = image.get_type_metrics canvas, options[:text]
canvas = Magick::Image.new(metrics.width, metrics.height){ self.background_color = options[:bg_color] }
options[:font_size] -= 1
end while metrics.width > options[:max_width]
image = Magick::Draw.new
image.font options[:font]
image.font_size options[:font_size]
image.fill options[:text_color]
image.text 0, 0, options[:text]
image.gravity = Magick::CenterGravity
image.draw canvas
temp = Tempfile.new([font.file, '.png'])
canvas.write(temp.path)
render :text => open(temp.path).read
end
end
위의 코드는 작동 : 경로 파일에 공백이 포함 된 경우
문제입니다. 글꼴 이름이 "A Blick for All Seasons
"이 경우에
Magick::ImageMagickError in FontController#imagefont
non-conforming drawing primitive definition `Blick' @ error/draw.c/DrawImage/3146
, 그래서 그것을 따옴표에 문제가 있다고 생각 :이 경우 다음과 같은 오류를 표시합니다. 나는 간단한 따옴표를 넣으려고했지만 성공하지 못했습니다.
글꼴 이름에 'Blick'이라는 단어의 양쪽에 별표가 포함되어 있습니까? – x1a4
에는 별표가 포함되지 않았고 자격 정지가 작동하지 않았습니다. –