需求
在平时我们有没有这种需求,把一段文字用艺术字显示,并且可以保持成图片
例如我们在新浪微博中 所见到的 如:(http://ww1.sinaimg.cn/bmiddle/dd0b97bbjw1e803gixiy6j20c83gvqtp.jpg
使用说明
使用很简单:在控制台中输入 > ruby 程序文件名 字符文件名
即可 如 ruby text-img.rb test.txt
下面讲解的是如何实现的代码
1. 在ruby代码中,使用 ARGV[0] 接收输入的参数
2. 判读接收到的参数文件是否存在
3. 在文件存在的情况下,我们就可以来制作图片了
- 首先我们 需要用到一些图形处理的gem,如 rmagick (文档API: https://github.com/rmagick/rmagick ), 字体ttf文件 和 字符串文件
-
开始创建一个与制定的空图片
img = Magick::Image.new(width,height,Magick::HatchFill.new('white','white')) 参数说明:Image对象定义的前两个参数是定义图片的宽和高,后门一个定义图片的背景(可选),默认为白色。
-
创建一个画布,并设置字体格式即文字大小
gc = Magick::Draw.new gc.stroke('transparent') gc.pointsize(24) 参数说明:-stroke 描边用的颜色 -pointsize 加注字体大小,像素数
-
在把我们需要的字符串写在图片上
gc.font(字体文件的路径) gc.text(X坐标,Y坐标, 字符串) 参数说明:-font 指定字体,因为这样我加注文字,-text 指定字符串的 绘画位置坐标和字符
-
把画布印在图片上,并输出
gc.draw(img) img.write(图片的名字) 参数说明:-draw 是用来画,这里是文字 -write 是把图片输出
-
好了现在 运行 ruby text-img.rb test.txt
-
看一下完整的代码
#-*- coding: utf-8 -*- require 'RMagick' # gem install rmagick def file_read(filename) return nil if !File.exist?(filename) content = "" File.open(filename) do |file| content = file.read end puts content return content end def img_init(str,width,height,img_name) img = Magick::Image.new(width,height,Magick::HatchFill.new('white','white')) gc = Magick::Draw.new gc.stroke('transparent') gc.pointsize(24) gc.font("luxirbi.ttf") gc.text(20,40, str) gc.draw(img) img.write(img_name) end param = ARGV[0] filename = file_read(param) if filename.nil? p 'not fond' else img_init(filename, 440, 800, 'img.jpg') end