加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – Rails Carrierwave RMagick:仅在图像很大时裁剪

发布时间:2020-12-17 03:05:52 所属栏目:百科 来源:网络整理
导读:我正在使用载波来上传图像.在上传时,我正在为图像创建缩略图,这是使用Rmagick方法完成的,resize_to_fill如下所示. version :thumb do process :resize_to_fill= [150,150]end 这是所有RMagick方法carrierwave supports的输出(我想要的都不是): :resize_to_
我正在使用载波来上传图像.在上传时,我正在为图像创建缩略图,这是使用Rmagick方法完成的,resize_to_fill如下所示.

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

这是所有RMagick方法carrierwave supports的输出(我想要的都不是):

>:resize_to_fill => [150150]

这适用于较大的图像,但我的较小图像放大到150 x 150.

>:resize_to_fit => [150150]

它再次调整大小,我希望它独自留下!

>:resize_to_limit => [150150]

这个按原样保留,但不会裁剪较大的图像.它们的大小调整以保持纵横比.

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

这是怎么回事?我想要将较小的图像单独留下并仅将较大的图像裁剪为150 x 150.是否有其他方法或选项可以传递给resize_to_fill?

解决方法

我通过修改:resize_to_fill carrierwave方法解决了它,如代码 here中所述.

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

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

完全是我现在想要的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读