• RMagick动态生成图片


    安装配置
    在RMagick安装前,确保你的系统正确安装了rubys。
    RMagick的安装配置很简单:下载安装文件,解压缩后,在命令行状态下进入解压缩后的目录,找到RMagick的gem,如rmagick-1.14.1-win32.gem,然后命令行执行:gem rmagick-2.3.0-x86-mswin32.gem,然后双击ImageMagick-6.4.0-2-Q8-windows-dll.exe进行安装,只需要根据个人情况改变安装路径即可 。


    需求很简单,就是动态生成一个指定大小的图片,然后再图片上写几个汉字或者数字,英文等,所以大概的步骤就是这样的,直接看代码吧:
    复制内容到剪贴板
    代码:


      require 'RMagick' 
    class DrawPrice 
      
         def self.draw(name,text1,text2,url='http://www.j-kanban.com') 
              img = Magick::Image.new(400,100,Magick::HatchFill.new('white','lightcyan2'))   
              gc = Magick::Draw.new   
              gc.stroke('transparent')   
              gc.pointsize(16)   
              gc.font("fonts/simhei.ttf")   
              gc.text(10,30, "#{text1}")   
              gc.text(10,50, "#{text2}")   
              gc.text(10,70, url)   
              gc.draw(img)   
              img.write("c:\\#{name}.jpg") 
          end 
      
      end 
      
      DrawPrice.draw("China","2008年5月12日14时28分","让我们永远铭记这一刻,愿逝者安息,生者坚强") 
    图片处理需要提供多种字体来写字,还考虑到发布环境在linux下,所以用了这样的方法:从Windows的字体文件夹c:/windows/fonts下拷贝出中文字体库到自己的工程目录的fonts目录中,然后通过设置gc.font来使用它们。

    RMagick动态生成图片

    class DrawPrice 
      
         def self.draw(name,text1,text2,text3) 
              img = Magick::Image.new(600,89,Magick::HatchFill.new('black','black'))   
              gc = Magick::Draw.new   

              gc.pointsize(24)   
              gc.font("fonts/simhei.ttf")   
              gc.fill('white')
              gc.text(10,25, "#{text1}")   
              gc.text(10,50, "#{text2}")   
              gc.text(10,75, "#{text3}")   
              gc.draw(img)   

              src = Magick::Image.read("candle.gif")[0]

                result = img.composite(src, Magick::CenterGravity,250,5,Magick::OverCompositeOp)
              result.write("c:\\#{name}.jpg") 
          end 
      
      end 
      
      DrawPrice.draw("China","沉痛悼念四川汶川大地震遇难同胞","2008年5月12日14时28分","让我们永远铭记这一刻,愿逝者安息,生者坚强") 

    RMagick动态生成图片

  • 相关阅读:
    Python全栈之机器学习参考笔记
    每个Kaggle冠军的获胜法门:揭秘Python中的模型集成
    logback配置文件
    浅谈Spring中的IOC容器
    JavaWeb三大组件之Servlet
    JavaWeb三大组件之Filter
    常用执行计划操作符
    Linux环境下Redis集群实践
    SQL事物隔离级别
    任务调度框架-Quartz.Net
  • 原文地址:https://www.cnblogs.com/stalwart/p/1859607.html
Copyright © 2020-2023  润新知