convert a qicon (or just a qimage) to base64 and qstring


I found difficult to find somewhere a method to convert a QIcon object to a QString to be displayed in base64. I needed it for implementing a nice feature for QuickView mode in Arora. I wanted to display in the HTML template the icon (logo.icon) of each domain. Therefore, I needed the QIcon to be converted to a QString containing the base64 encoding of the image. Moreover, the distribution of the QT Framework I downloaded for Mac Os X seems to block some useful constructors for QString objects

I would like to share with you how I did it:

QIcon icon =; // use your method to retrieve the QIcon object
QImage image(icon.pixmap(20,20).toImage()); // 20,20 are the size of the icon
QByteArray byteArray;
QBuffer buffer(&byteArray;);;, "PNG"); // writes the image in PNG format inside the buffer
QString iconBase64 = QString::fromLatin1(byteArray.toBase64().data());

We convert the QIcon object to a QImage through another conversion to a QPixmap object at line 2. Then we create a QByteArray and a QBuffer associated to the byte-array. We call the save() method of the QImage object that saves the image in PNG format inside the byte-array, using the buffer. At the end, we call the byteArray.base64() method that returns a copy of the byte-array, converted to base64. From that object we call its data() method to retrieve a char* representation of the byte-array, creating the QString.

Hope this could help who runs into my problem.

I do not use a commenting system anymore, but I would be glad to read your feedback. Feel free to contact me.