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

ruby-on-rails – 使用Refile获取图像尺寸

发布时间:2020-12-16 21:32:02 所属栏目:百科 来源:网络整理
导读:使用 Refile gem处理Rails中的文件上传,在上传期间/之后确定图像高度和宽度的最佳方法是什么?这个AFAIK没有内置的支持,我无法弄清楚如何使用MiniMagick来做到这一点. 解决方法 @ russellb的评论几乎让我在那里,但不太正确.如果你有一个名为@file的Refile ::
使用 Refile gem处理Rails中的文件上传,在上传期间/之后确定图像高度和宽度的最佳方法是什么?这个AFAIK没有内置的支持,我无法弄清楚如何使用MiniMagick来做到这一点.

解决方法

@ russellb的评论几乎让我在那里,但不太正确.如果你有一个名为@file的Refile :: File,你需要:
fileIO = @file.to_io.to_io
mm = MiniMagick::Image.open(fileIO)
mm.width # image width
mm.height # image height

是的,这是两次调用#to_io> …<第一个to_io给你一个Tempfile,这不是MiniMagick想要的.希望这有助于某人! – 更新 – 额外的皱纹:如果文件非常小(< ~20kb,from:ruby-forum.com/topic/106583),这将失败,因为你不会从to_io获得临时文件,而是获取StringIO.如果你得到一个StringIO,你需要分叉代码并执行:

mm = MiniMagick::Image.read(fileio.read)

所以我的完整代码现在是:

# usually this is a Tempfile; but if the image is small,it will be 
# a StringIO instead >:[
fileio = file.to_io

if fileio.is_a?(StringIO)
  mm = MiniMagick::Image.read(fileio.read)
else
  file = fileio.to_io
  mm = MiniMagick::Image.open(file)
end

(编辑:李大同)

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

    推荐文章
      热点阅读