6

私は omniauth-twitter gem を使用して、twitter を介してユーザーを認証しています。また、彼らの Twitter プロフィール画像を私のサイトのアバターとして使用しています。ただし、Twitter から取得した画像は低解像度です。Twitterの方が解像度の高い写真を入手できることは知っています。どうすれば入手できますか?

これが私が現在行っていることです。ユーザーモデルのメソッドです。それは機能しますが、質の高い写真が得られません:

user.rb

  def update_picture(omniauth)
    self.picture   = omniauth['info']['image'] 
  end

どうにかしてサイズオプションを渡すことができるのではないかと思いましたが、良い解決策が見つからないようです。

4

3 に答える 3

16

omn​​iauth-twittergemも使っています。ユーザーモデルのapply_omniauthメソッドで、Twitterの画像パスを次のように保存し、_normalサフィックスを削除します。

if omniauth['provider'] == 'twitter'
    self.image = omniauth['info']['image'].sub("_normal", "")
end

次に、サイズ引数を受け入れるportraitというヘルパーメソッドがあります。Terence Edenが示唆しているように、ファイル名の_sizeサフィックスを置き換えるだけで、Twitterが提供するさまざまな画像サイズにアクセスできます。

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
于 2012-08-22T14:46:51.167 に答える
8

画像の URL を取得したら、それは非常に簡単です。URL の末尾から「_normal」を削除する必要があります。

これが私のアバター画像です

https://si0.twimg.com/profile_images/2318692719/7182974111_ec8e1fb46f_s_normal.jpg

大きいバージョンはこちら

https://si0.twimg.com/profile_images/2318692719/7182974111_ec8e1fb46f_s.jpg

単純な正規表現で十分です。

画像のサイズは予測できないので、サイトに表示する前にサイズを変更することをお勧めします。

于 2012-07-11T14:45:05.793 に答える