【问题标题】:Paperclip process images only仅回形针处理图像
【发布时间】:2011-03-13 13:33:30
【问题描述】:

我想将单个文件字段用于多种格式。据我了解,Paperclip 足够聪明,只能缩放图像而无需理会其他格式,但这似乎不适用于 flv(它返回 imagemagick/identify-errors)。有什么方法可以帮助 Paperclip 并明确设置特定格式以进行缩放?

更新: 显然,这些错误可以通过 :whiny=>false 来防止(感谢 fl00r),它适用于常规上传。 但是,我在这里要做的是通过 FTP 上传文件,然后通过代码在附件参数中使用 File.new([:path]) 创建新记录。这就像图像的魅力,但 :whiny=>false-trick 不会再这样做了。有人对此有什么建议吗?

【问题讨论】:

    标签: ruby-on-rails ruby image-processing paperclip


    【解决方案1】:

    :whiny 选项设置为false:

    has_attached_file :my_attach, :whiny => false ...
    

    peparclip 只处理图像无济于事,但如果处理失败也不会抛出错误

    UPD

    仅处理图像:

    has_attached_file :file, 
      :styles => lambda{ |a| ["image/jpeg", "image/png"].include?( a.content_type ) ? { :small => "90x90#" } : {}  }
    

    您可以在其中向["image/jpeg", "image/png"] 数组中添加尽可能多的内容类型

    【讨论】:

    • 不知何故,array-include-approach 不断抛出“NoMethodError (undefined method `each' for false:FalseClass)”错误,所以我不得不以肮脏的方式去做。但至少它有效,再次感谢。
    • 看起来这个问题与样式无关
    • 这就是我的想法。现在可以工作,但我会继续寻找这个错误是什么。
    【解决方案2】:

    您还可以使用回形针的回调对图像进行后处理,并指示回形针只处理图像。如果 before_post_process 回调返回 false,则处理停止。

        before_post_process :process_only_images
    
        def process_only_images
         %w(image/jpeg, image/png,image/gif,image/pjpeg, image/x-png).include?(attachment_content_type)
        end
    

    https://github.com/thoughtbot/paperclip#events查看回形针的文档以获取更多详细信息

    【讨论】:

    • 我喜欢这种方法,但代码不太正确:%w(image/jpeg image/png,image/gif image/pjpeg image/x-png).include?(attachment_content_type)
    • 您必须小心,这不是您使用 %w 声明数组的方式。改用这个%w(image/jpeg image/png image/gif image/pjpeg image/x-png).include?(resource_content_type)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    相关资源
    最近更新 更多