以下代码只是将给定字符串写入存储到文件系统的现有图像。就图像处理而言,它并不是非常复杂。但是,调用MiniMagick显然会产生一些开销。此外,这个例程将被频繁调用,因此需要尽快完成。
除了将映像缓存到磁盘之外,还有哪些选项可以使用rails / ruby来确保此代码以最佳性能运行?
variable = "some string"
mm = MiniMagick::Image.open("#{Rails.root}/app/assets/images/b.png")
mm.combine_options do |c|
c.gravity 'center'
c.pointsize '13'
c.draw "text 33,0 '#{variable}'"
end
send_data(mm.to_blob, :type => 'image/png', :disposition => 'inline'
答案 0 :(得分:1)
图像处理的标准方法是在后台执行 - 用户上传图像(可能直接到S3),然后服务器在后台处理图像缩略图。
这使应用程序尽可能快。这是一种使用resque:https://github.com/lardawge/carrierwave_backgrounder
在后台处理载波上传的方法然后,您将此图像处理移动到载波作为一个步骤,您就可以开始了!