23

我想从 facebook 获取用户个人资料大图或普通图片。现在我使用以下代码从用户个人资料图片中获取方形版本:

:image => access_token.info.image
# http://graph.facebook.com/id/picture?type=square

如何获得大版本或普通版本?

或者和应用程序,我如何在这个 url 中替换最后一个单词,大而不是正方形......

非常感谢你!

4

4 回答 4

33

如果您想在登录时获取不同尺寸的图片,omniauth-facebook 策略可以选择更改请求的图片。

image_size:设置 auth hash 中返回的图片 url 的大小。

例如,将通过以下方式在 omniauth.rb 中请求大图:

provider :facebook, 'secrets', 'sekrets', :image_size => 'large'

https://github.com/mkdynamic/omniauth-facebook#configuring

于 2012-06-07T16:04:02.497 回答
27

以下是 facebook 允许的 4 种不同尺寸的个人资料图片。

http://graph.facebook.com/id/picture?type=small
http://graph.facebook.com/id/picture?type=square
http://graph.facebook.com/id/picture?type=large
http://graph.facebook.com/id/picture?type=normal
于 2012-05-10T11:28:55.020 回答
4

当您将其保存到数据库中时,您可以这样做access_token.info.image.split("=")[0] << "=large"

只需将大更改为您想要的任何大小。

或者你可以有一个辅助方法来在你的视图中显示不同的大小。

def profile_photo(type="large")
  puts @user.image.split("=")[0] << "=#{type}"
end

profile_photo("small") #=> http://url?type=small

profile_photo("square") #=> http://url?type=square

profile_photo #=> http://url?type=large

profile_photo("normal")  #=> http://url?type=normal
于 2012-06-14T10:01:02.873 回答
2

而不是更改配置文件,我只是添加+ "?type=large"到 url。

<%= image_tag current_user.image + "?type=large" %>

所以你可以随时要求不同的尺寸。

<%= image_tag current_user.image + "?type=normal" %>

<%= image_tag current_user.image + "?type=small" %>

于 2015-12-21T01:31:21.343 回答