首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用omniauth-twitter从Twitter检索中等或大型个人资料图像

使用omniauth-twitter从Twitter检索中等或大型个人资料图像
EN

Stack Overflow用户
提问于 2012-07-11 13:43:47
回答 3查看 6.5K关注 0票数 6

我使用omniauth-twitter gem通过twitter对用户进行身份验证。我还使用他们的Twitter个人资料图片作为我的网站的头像。然而,我从Twitter上得到的图像分辨率很低。我知道推特上有更好的分辨率图片。我怎么才能得到它?

这是我目前正在做的事情。它是用户模型中的一种方法。它起作用了,只是不能给我一个好的质量图片:

user.rb

代码语言:javascript
复制
  def update_picture(omniauth)
    self.picture   = omniauth['info']['image'] 
  end

我想也许我可以通过某种方式给它一个尺寸选项,但似乎找不到一个好的解决方案。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-22 22:46:51

我也在使用omniauth-twitter gem。在我的用户模型的apply_omniauth方法中,我像这样保存Twitter图像路径,去掉_normal后缀:

代码语言:javascript
复制
if omniauth['provider'] == 'twitter'
    self.image = omniauth['info']['image'].sub("_normal", "")
end

然后我有一个帮助器方法,叫做portrait,它接受一个size参数。正如Terence Eden所建议的,您只需替换文件名的_size后缀即可访问the different image sizes that Twitter provides

代码语言:javascript
复制
def portrait(size)

    # Twitter
    # mini (24x24)                                                                  
    # normal (48x48)                                            
    # bigger (73x73)                                                
    # original (variable width x variable height)

    if self.image.include? "twimg"

        # determine filetype        
        case 
        when self.image.downcase.include?(".jpeg")
            filetype = ".jpeg"
        when self.image.downcase.include?(".jpg")
            filetype = ".jpg"
        when self.image.downcase.include?(".gif")
            filetype = ".gif"
        when self.image.downcase.include?(".png")
            filetype = ".png"
        else
            raise "Unable to read filetype of Twitter image for User ##{self.id}"
        end

        # return requested size
        if size == "original"
            return self.image
        else
            return self.image.gsub(filetype, "_#{size}#{filetype}")
        end

    end

end
票数 16
EN

Stack Overflow用户

发布于 2012-07-11 22:45:06

有了图像的URL之后,就很简单了。您需要删除URL末尾的"_normal“。

这是我的头像

代码语言:javascript
复制
https://si0.twimg.com/profile_images/2318692719/7182974111_ec8e1fb46f_s_normal.jpg

下面是更大的版本

代码语言:javascript
复制
https://si0.twimg.com/profile_images/2318692719/7182974111_ec8e1fb46f_s.jpg

一个简单的正则表达式就足够了。

请记住,图像的大小是不可预测的-所以您可能希望在将其显示在站点上之前调整它的大小。

票数 8
EN

Stack Overflow用户

发布于 2014-11-18 07:33:45

一种更好的方法是通过omniauth-twitter gem的配置选项。

provider :twitter, "API_KEY", "API_SECRET", :image_size => 'original'

https://github.com/arunagw/omniauth-twitter

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11426253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档