使用Rails中的Paperclip在上传图像上合成文本

时间:2013-11-28 20:20:20

标签: ruby-on-rails imagemagick paperclip

我的应用程序有一个表单,允许上传图像和输入标题。

我想将提交的标题文本动态合成到图像上。

目前,我可以上传图片并使用自定义Paperclip流程对其进行处理。这会将预定义文本合成到图像上,如下所示:

class Caption < ActiveRecord::Base
     has_attached_file :captioned_photo,
              processors: [:captioner],
              styles: {
                captioned_photo: {
                  format: '.png',
                  caption_text: 'text to overlay on image'
                }
              } 

    belongs_to :submission
end

如何将用户提交的文本传递到处理器?类似的东西:

class Caption < ActiveRecord::Base
     has_attached_file :captioned_photo,
              processors: [:captioner],
              styles: {
                captioned_photo: {
                  format: '.png',
                  caption_text: user_uploaded_text
                }
              } 

    belongs_to :submission
end

感谢。

更新:

喇嘛确实是要走的路:

has_attached_file :captioned_photo,
              processors: [:captionbitch],
              styles: -> (attachment) {
                  {
                  polarized: {
                    format: '.png',
                    is_polarized: true,
                    the_text: attachment.instance.text
                  }
                }
              } 

这允许在has_attached_file方法调用中动态分配属性。 attachment.instance.text返回名为text的数据字段。

1 个答案:

答案 0 :(得分:1)

我敢打赌lambda会帮助你。转到思想bot / paperclip github页面并搜索“Dynamic Styles”。