rails의 Gravatar에 표시되는 기본 이미지 변경

이사



Rails 튜토리얼을 진행하고 있을 때 Gravatar를 사용하여 사용자의 프로필 이미지를 설정했습니다. 그 때,
"기본 이미지를 좀 더 멋지게 할 수 없는 것인가"
라고 생각했기 때문에, Gravatar의 디폴트 화상 변경 방법에 대해 조사했습니다.
참고로 기본 이미지는 다음과 같습니다.


Gravatar란?



이미지를 업로드하고 지정된 이메일 주소와 이미지를 연결할 수 있는 무료 서비스입니다.
튜토리얼에서는 사용자의 이미지를 지정하는 코드는 다음과 같다고 생각합니다.

users_helper.rb
def gravatar_for(user, options = { size: 80 })
    gravatar_id = Digest::MD5::hexdigest(user.email.downcase)
    size = options[:size]
    gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}?s=#{size}"
    image_tag(gravatar_url, alt: user.name, class: "gravatar")
end

각 사용자의 이미지는 표시할 이미지의 URL을 지정하는 gravatar_url에 따라 다릅니다.

gravatar_url의 매개변수



현재 단계에서는 표시할 이미지의 URL로https://secure.gravatar.com/avatar/#{gravatar_id}?s=#{size}가 지정되었습니다.
이 경로의 지정에 뭔가 힌트가 있을 것 같습니다. 공식 사이트에 있었다 여기의 기사에 의하면,

If you'd prefer to use your own default image (perhaps your logo, a funny face, whatever), then you can easily do so by supplying the URL to an image in the d= or default= parameter. The URL should be URL -encoded to ensure that it carries across correctly, for example:https://www.gravatar.com/avatar/00000000000000000000000000000000?d=https%3A%2F%2Fexample.com%2Fimages%2Favatar.jpg "/>

라는 것. 즉, URL의 d 또는 default라는 파라미터에 설정하고 싶은 패스를 지정하는 것으로, 임의의 화상을 디폴트 화상으로 지정할 수 있다고 하는 것.
그러나 다음과 같은 제약이 있습니다.

MUST be publicly available (e.g. cannot be on an intranet, on a local development machine, behind HTTP Auth or some other firewall etc). Default images are passed through a security scan to avoid malicious content.
MUST be accessible via HTTP or HTTPS on the standard ports, 80 and 443, respectively.
MUST have a recognizable image extension (jpg, jpeg, gif, png)
MUST NOT include a querystring (if it does, it will be ignored)
  • 누구나 액세스 가능한 이미지인 것(공개 범위를 한정하고 있는 이미지나 로컬 환경에 있는 이미지는 NG).
  • HTTP, HTTPS의 포트 번호가 각각 80번, 443번인 것.
  • 확장자가 jpg, jpeg, gif, png 중 하나여야 합니다.
  • 경로에 URL 매개 변수를 사용하지 마십시오.
    그렇습니다.

  • 실제로 해보자



    현재 단계에서 사용자 목록 화면은 다음과 같습니다.

    기본 이미지로 앞서 보여준 하늘색 이미지가 설정되어 있습니다.
    여기 의 기사에 의하면, 예를 들어 d의 파라미터에 robohash를 지정하면, 이하와 같은 로봇의 화상이 디폴트 화상이 되는 것 같습니다.

    실제로 user_helpers.rb를 다음과 같이 변경합니다. gravatar_url의 d에 robohash를 설정했습니다.

    users_helper.rb
    def gravatar_for(user, options = { size: 80 })
        gravatar_id = Digest::MD5::hexdigest(user.email.downcase)
        size = options[:size]
        gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}?d=robohash&?s=#{size}"
        image_tag(gravatar_url, alt: user.name, class: "gravatar")
    end
    

    그러면

    확실히 디폴오 이미지가 로봇이 되었네요.
    다른 이미지도 사용해 봅니다. 참고 문헌의 기재에 따라, 다음은 d에 retro를 지정합니다.
    gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}?d=retro&?s=#{size}"
    


    기본 이미지가 도트 그림이 되었습니다.
    마지막으로 여기의 이미지를 사용해보십시오 (특히 악의는 없습니다).

    d에 이미지의 URL을 지정합니다.
    gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}?d=https://resizer6.myct.jp/img/79313116268/otaku_winter.png&?s=#{size}"
    


    이쪽도 할 수 있었습니다.

    요약



    Gravatar의 기본 이미지는 d라는 매개 변수에 이미지 경로를 지정하여 변경할 수 있습니다.

    참고문헌

    좋은 웹페이지 즐겨찾기