PixbufManipulator : overload function toByteArray

overloads toByteArray. This function is required to manage avatar
from vcard.

Tuleap: #655
Change-Id: I0ae05374627486cacfbe5a4f1eea17e8129ed32e
diff --git a/src/native/pixbufmanipulator.cpp b/src/native/pixbufmanipulator.cpp
index 468399b..1e534bf 100644
--- a/src/native/pixbufmanipulator.cpp
+++ b/src/native/pixbufmanipulator.cpp
@@ -177,8 +177,28 @@
 QByteArray
 PixbufManipulator::toByteArray(const QVariant& pxm)
 {
-    Q_UNUSED(pxm);
-    return QByteArray();
+    std::shared_ptr<GdkPixbuf> pixbuf_photo = pxm.value<std::shared_ptr<GdkPixbuf>>();
+
+    if(pixbuf_photo.get()) {
+        gchar* png_buffer = nullptr;
+        gsize png_buffer_size;
+        GError *error = nullptr;
+
+        gdk_pixbuf_save_to_buffer(pixbuf_photo.get(), &png_buffer, &png_buffer_size, "png", &error, NULL);
+        QByteArray array = QByteArray(png_buffer, png_buffer_size);
+
+        g_free(png_buffer);
+
+        if (error != NULL) {
+            g_warning("in toByteArray, gdk_pixbuf_save_to_buffer failed : %s\n", error->message);
+            g_clear_error(&error);
+        }
+
+        return array;
+    } else {
+        g_debug("in toByteArray, failed to retrieve data from parameter pxm");
+        return QByteArray();
+    }
 }
 
 QVariant