.NET - Obtendo e exibindo links de imagens Gravatar
Neste artigo vou mostrar como podemos o link de imagens Gravatar associado ao email, exibindo as imagens em um componente WebBrowser. |
Gravatar, avatar
reconhecido globalmente (em inglês, Globally Recognized Avatar), é um
serviço de disponibilização de avatares via associação a endereços de
correio eletrônico cadastrados, para uma variedade de sites, inclusive os
baseados em WordPress.
Com o Gravatar, suas mensagens podem ser facilmente identificadas, em
qualquer site que use o recurso, pela imagem que o represente e que você tenha
cadastrado no sistema.
No Gravatar, usuários podem registrar uma conta baseada em seu endereço de email, enviar uma imagem para ser usada como avatar e assim ficar associada a sua conta.
Plugins Gravatar estão disponíveis para softwares de blog, assim, quando visitantes publicarem comentários no blog; o software de blog verifica se o email possui uma conta no serviço do Gravatar. Se possuir, o Gravatar é mostrado no comentário do usuário.
Usar imagens de perfil no seu aplicativo obtendo-as através do serviço Gravatar, é grátis e muito fácil.
Supondo que você já tenha os emails dos seus usuários que esta acompanhando ou dos quais pretenda obter o link da imagem gerada no Gravatar, basta você formar uma URL que aponta para a imagem do perfil do usuário (usando um hash do endereço de email) e usar essa url em seu aplicativo usando uma tag de imagem ou outro componente.
A url tem o seguinte formato : http://www.gravatar.com/avatar/{hash}
onde hash é o hash do email que
deve ser calculado.
Exemplo:
http://www.gravatar.com/avatar/73543542128f5a067ffc34305eefe48a
Neste artigo vamos criar um projeto Windows Forms que permite obter o link da imagem associado ao email e exibir a imagem.
Recursos usados :
Criando a solução no VS 2013 Express Edition
Abra o VS 2013 Express for Windows desktop e clique em New Project;
A seguir selecione Visual C# -> Windows Forms Application;
Informe o nome Imagens_Gravatar e clique no botão OK;
Clique no menu PROJECT e em Add Class;
Informe o nome Gravatar.cs e a seguir digite o código baixo nesta classe: (versão C# e VB .NET )
using System.Security.Cryptography;
using System.Text;
namespace Imagens_Gravatar
{
public static class Gravatar
{
public static string GetLinkImagem(string Email)
{
try
{
//gera o hash para o email
string hash = HashEmailGravatar(Email);
//Monta a url a e retorna
return string.Format("http://www.gravatar.com/avatar/{0}", hash);
}
catch
{
throw;
}
}
public static string HashEmailGravatar(string email)
{
// Cria uma nova instância do objeto MD5CryptoServiceProvider
MD5 md5Hasher = MD5.Create();
// Converte a string para um array de bytes e calcula o hash
byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(email));
// Cria um novo Stringbuilder para coletar bytes e cria uma string
StringBuilder sBuilder = new StringBuilder();
// Percorre cada byte dos dados e formata cada como uma string hexadecimal
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
//retorna a string
return sBuilder.ToString();
}
}
}
|
Imports System.Security.Cryptography
Imports System.Text
Namespace Imagens_Gravatar
Public NotInheritable Class Gravatar
Private Sub New()
End Sub
Public Shared Function GetLinkImagem(Email As String) As String
Try
'gera o hash para o email
Dim hash As String = HashEmailGravatar(Email)
'Monta a url a e retorna
Return String.Format("http://www.gravatar.com/avatar/{0}", hash)
Catch
Throw
End Try
End Function
Public Shared Function HashEmailGravatar(email As String) As String
' Cria uma nova instância do objeto MD5CryptoServiceProvider
Dim md5Hasher As MD5 = MD5.Create()
' Converte a string para um array de bytes e calcula o hash
Dim data As Byte() = md5Hasher.ComputeHash(Encoding.[Default].GetBytes(email))
' Cria um novo Stringbuilder para coletar bytes e cria uma string
Dim sBuilder As New StringBuilder()
' Percorre cada byte dos dados e formata cada como uma string hexadecimal
For i As Integer = 0 To data.Length - 1
sBuilder.Append(data(i).ToString("x2"))
Next
'retorna a string
Return sBuilder.ToString()
End Function
End Class
End Namespace
|
Temos aqui uma classe estático com o método estático GetLinkImagem() que recebe o email, calcula o hash e obtém o link da imagem do serviço Gravatar.
Agora vamos criar a interface a partir de onde iremos obter as imagens usando a classe Gravatar.
No formulário padrão form1.cs inclua os seguintes controles:
Disponha os controles conforme o leiaute da figura abaixo:
No evento Click do botão de comando - btnLink - inclua o código abaixo: (versão C# e VB .NET )
private void btnLink_Click(object sender, EventArgs e)
{
try
{
if (!string.IsNullOrEmpty(txtEmail.Text))
{
string link = Gravatar.GetLinkImagem(txtEmail.Text);
this.webBrowser1.Url = new Uri(String.Format(link+"?size=120"));
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
|
Private Sub btnLink_Click(sender As Object, e As EventArgs) Handles btnLink.Click
Try
If Not String.IsNullOrEmpty(txtEmail.Text) Then
Dim link As String = Gravatar.GetLinkImagem(txtEmail.Text)
Me.WebBrowser1.Url = New Uri([String].Format(link & Convert.ToString("?size=120")))
End If
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
|
O código acima verifica se o email foi informado e usa o método GetLinkImagem() para obter o link do email.
A seguir, usando o componente WebBrowser, exibimos a imagem obtida. No exemplo estou aumentando o tamanho da imagem ("?size=120").
Se desejar exibir a imagem no tamanho original basta alterar a linha de código que exibe a imagem conforme abaixo:
this.webBrowser1.Url = new Uri(String.Format(link));
Executando o projeto iremos obter o seguinte resultado para o email macoratti@yahoo.com :
Pegue o projeto completo aqui : Imagens_Gravatar.zip (C#) Imagens_Gravatar_VBNET.zip (VB .NET)
E esta é a mensagem
que dele ouvimos, e vos anunciamos: que Deus é luz, e não há nele trevas
nenhumas.
Se dissermos que temos comunhão com ele, e andarmos em trevas, mentimos, e não
praticamos a verdade
1 João 1:5,6
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: