Get user picture using Lync APIs
I was exploring the Lync APIs after installing Lync SDK on my machine and as a curiosity tried to display the user’s communicator / Lync Image in custom control.
To get the following example working - You will need to install the Lync SDK or add the references of Lync APIs to your project. Lync SDK can be downloaded here , after this – add the references from location [%root%]\Program Files (x86)\Microsoft Lync\SDK\Assemblies\Desktop\Microsoft.LyncModel.dll to your project.
I created one sample Silverlight project where I took Silverlight image control and tried to provide the source. This control takes source as either full path of image or you can assign the BitMap Imag stream.
I created one entity class named – UserEntity which holds BitMapImage as a property.
- public class UserEntity
- {
- public BitmapImage UserImage { get; set; }
- }
Here is the xaml for Silverlight control - Binding is added as BitMapImage stream.
- <Image Name="userImage" Source="{Binding Path=UserImage}" Margin="2,2,2,2" Height="40" Width="40"></Image>
Now the function to get user image.
- public partial class MainPage : UserControl
- {
- List<UserEntity> allUsers = new List<UserEntity>();
- LyncClient client;
- public MainPage()
- {
- InitializeComponent();
- client = LyncClient.GetClient();
-
- UserEntity userObjet = new UserEntity();
-
- if (client != null)
- {
- ContactManager cManager = client.ContactManager;
- if (cManager != null)
- {
- Contact contact = cManager.GetContactByUri("[email protected]");
- if (contact != null)
- {
- List<ContactInformationType> ciList = new List<ContactInformationType>();
- ciList.Add(ContactInformationType.Photo);
- IDictionary<ContactInformationType, object> dic = null;
- dic = contact.GetContactInformation(ciList);
- if (dic != null)
- {
- Stream photoStream = dic[ContactInformationType.Photo] as Stream;
- if (photoStream != null)
- {
- BitmapImage userImageBitMap = new BitmapImage();
- userImageBitMap.SetSource(photoStream);
- userObjet.UserImage = userImageBitMap;
- }
- }
- }
- }
- }
- allUsers.Add(userObjet);
- if (allUsers != null && allUsers.Count > 0)
- {
- userImage.ItemsSource = allUsers;
- }
- }