【问题标题】:Ruby on Rails - Carrierwave get the image dimension width and heightRuby on Rails - Carrierwave 获取图像尺寸宽度和高度
【发布时间】:2012-08-18 22:21:07
【问题描述】:

我需要知道当前载波实例的宽度和高度

例如:

image_tag image.photo_url,:width => image.photo.width, :height => image.photo.height

但问题是 image.photo.width 和 image.photo.height 不起作用。

有什么想法吗?

【问题讨论】:

  • 同意;如果您不接受对您的问题的回答,您将无法在这里获得帮助。
  • 是的,我同意。如何接受答案?
  • 你的问题的答案有一个空勾,点击你想接受的答案的勾

标签: ruby-on-rails ruby-on-rails-3 gem bundle carrierwave


【解决方案1】:

您必须安装 ImageMagick、RMagick 或 MiniMagick。然后你打开文件(图像),然后才能找出它的高度。

示例:https://github.com/jnicklas/carrierwave#conditional-versions(参见 is_landscape? 方法),复制到这里:

  def is_landscape? picture
    image = MiniMagick::Image.open(picture.path)
    image[:width] > image[:height]
  end

或其他相关问题:

Carrierwave and mini_magick finding widths & height

【讨论】:

  • “没有这样的文件或目录”这是我尝试打开picture.path时得到的。
  • 您可以从模型方法(打开文件以检查宽度/高度)返回高度/宽度,并从您的视图中调用该方法。检查 picture.path 是否包含正确的文件路径(puts 或 debugger),并检查您的 pwd(当前工作目录)
  • 是的,我已经尝试过了。甚至 MiniMagick::Image.open("/uploads/avatar/avatar/269/naruto.jpg") 也不起作用.. 很奇怪
  • 另一种可能性是您可能没有权限。检查运行 Rails 服务器的用户是否可以访问该图像。如果没有,请尝试 chown 或 chmod 授予权限。也许您使用管理员帐户而不是网络服务器帐户添加了图像。
  • 我在我的文件中使用了“chmod 777”,但仍然“没有这样的文件或目录”