【问题标题】:RoR - Paperclip - How to set minimal width of an attachementRoR - 回形针 - 如何设置附件的最小宽度
【发布时间】:2025-11-29 23:15:04
【问题描述】:

我的布局要求将所有缩略图保持在 80 像素高度,不能更高,也不能更小。在我的模型中,我将样式设置为:thumb=> "500x80>",所以基本上几乎每张不太宽的图片都会得到完美的缩影,高度为 80 像素。但是,有时我的图片又窄又高,因此拇指可能具有无法点击的尺寸,例如 5x80。所以我不想裁剪图片,只要缩略图没有变得疯狂变窄,但我认为如果拇指的宽度小于 25px,我可以做出一点牺牲并裁剪它们。

所以我的问题是 - 是否可以在回形针中设置图片的最小比例,其中样式将是 "500x80>" 并且超过它会变成像 "25x80#" 这样的东西?

【问题讨论】:

    标签: ruby-on-rails width paperclip dimensions


    【解决方案1】:

    几周前,我在互联网的某个地方找到了一个不错的解决方案。我忘了在哪里,对不起。但它看起来像这样:

    has_attached_file :img, :styles => {:thumb => [Proc.new { |instance| instance.resize }, :jpg]}
    
    
    def resize     
    @geo_original = Paperclip::Geometry.from_file(img.to_file(:original))
    
    ratio = @geo_original.width/@geo_original.height  
    
    if ratio < 0.4 or ratio > 1.375
        # Image very high or very wide
        "110x80#"   
    else
        # Average dimensions
        "110x80>"
    end
    end
    

    【讨论】:

      【解决方案2】:

      我不确定您如何仅使用回形针来完成此操作 - 感觉应该有办法做到这一点,不是吗?

      Paperclip 只是在后台使用 imagemagick (http://www.imagemagick.org/Usage/resize/#shrink),您可以 cron 一项使用图像魔法每晚生成那些讨厌的窄图像的作业。

      这是一个 hack,但我能提供最好的主意。

      祝你好运。

      【讨论】: