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

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 使用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
原文链接:/ruby/267322.html

猜你在找的Ruby相关文章