字符串转化为艺术字图片

需求

在平时我们有没有这种需求,把一段文字用艺术字显示,并且可以保持成图片

例如我们在新浪微博中 所见到的 如:(http://ww1.sinaimg.cn/bmiddle/dd0b97bbjw1e803gixiy6j20c83gvqtp.jpg

使用说明

使用很简单:在控制台中输入 > ruby 程序文件名 字符文件名
即可 如 ruby text-img.rb test.txt

下面讲解的是如何实现的代码

1. 在ruby代码中,使用 ARGV[0] 接收输入的参数

2. 判读接收到的参数文件是否存在

3. 在文件存在的情况下,我们就可以来制作图片了

  1. 首先我们 需要用到一些图形处理的gem,如 rmagick (文档API: https://github.com/rmagick/rmagick ), 字体ttf文件 和 字符串文件
  2. 开始创建一个与制定的空图片

    img = Magick::Image.new(width,height,Magick::HatchFill.new('white','white'))
    参数说明:Image对象定义的前两个参数是定义图片的宽和高,后门一个定义图片的背景(可选),默认为白色。
    
  3. 创建一个画布,并设置字体格式即文字大小

     gc = Magick::Draw.new
     gc.stroke('transparent')
     gc.pointsize(24)
     参数说明:-stroke 描边用的颜色   -pointsize 加注字体大小,像素数
    
  4. 在把我们需要的字符串写在图片上

      gc.font(字体文件的路径)
      gc.text(X坐标,Y坐标, 字符串)
      参数说明:-font 指定字体,因为这样我加注文字,-text 指定字符串的 绘画位置坐标和字符
    
  5. 把画布印在图片上,并输出

    gc.draw(img)
    img.write(图片的名字)  
    参数说明:-draw 是用来画,这里是文字  -write 是把图片输出
    
  6. 好了现在 运行 ruby text-img.rb test.txt

  7. 这样图片就出来了,见图 

  8. 看一下完整的代码

    #-*- 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

你可能感兴趣的:(Ruby,RMagick)