4

我正在使用载波上传图像。在上传时,我正在为使用 Rmagick 方法完成的图像创建缩略图,resize_to_fill 如下所示。

version :thumb do
    process :resize_to_fill=> [150, 150]
end

以下是carrierwave支持的所有RMagick方法的输出(我都不想要):

  1. :resize_to_fill => [150,150]

这适用于较大的图像,但我的较小图像放大到 150 x 150。 :resize_to_fill => [150,150]

  1. :resize_to_fit => [150,150]

它再次被调整大小,我希望它独自一人!

:resize_to_fit => [150,150]

  1. :resize_to_limit => [150,150]

这个保持原样,但没有裁剪更大的图像。它们被调整大小以保持纵横比。

在此处输入图像描述

在此处输入图像描述

这是我想要的结果以及我的小图像和大图像的外观。

在此处输入图像描述 在此处输入图像描述

这是怎么做的?我希望单独留下较小的图像,仅将较大的图像裁剪为 150 x 150。我可以将其他方法或选项传递给 resize_to_fill 吗?

4

1 回答 1

6

我通过修改:resize_to_fill载波方法解决了这个问题,如他们的代码中所述

我刚刚使用相同的代码创建了一个新方法,并检查上传的图像是否更小。这是新方法:

def resize_to_fill_modfied(width, height, gravity=::Magick::CenterGravity)
      manipulate! do |img|
        img.crop_resized!(width, height, gravity) unless (img.columns <= width && img.rows <= height)
        img = yield(img) if block_given?
        img
      end
    end

正是我现在想要的。

于 2013-09-09T01:28:10.077 回答