#pragma once #include #include #include #include #include #include #include #include "qpainter.h" #ifdef __ANDROID__ # include # include #endif // __ANDROID__ struct AndroidImagePicker : QObject { Q_OBJECT public slots: static void openPicker() { qDebug() << "Starting image picker intent"; #ifdef __ANDROID__ QtAndroid::androidActivity().callMethod( "openImagePicker", "()V" ); #endif // __ANDROID__ } // Used to convert a given image path into a png base64 string static QString imageToBase64 (QString const& path) { // Get local path from uri QUrl url (path); QString localPath = url.toLocalFile(); qDebug() << "imageToBase64() local path:" << localPath ; // Read the image QImageReader reader; reader.setFileName(localPath); QImage image = reader.read(); image = image.scaled(96,96,Qt::KeepAspectRatio,Qt::SmoothTransformation); // Transform image into PNG format QByteArray ba; QBuffer buffer( &ba ); buffer.open( QIODevice::WriteOnly ); image.save( &buffer, "png" ); // Get Based 64 image string QString encoded = QString(ba.toBase64()); qDebug() << "imageToBase64() encoded" ; return encoded; } static QString base64FaceAvatarGenerator (QVariantList onloads, int size) { QImage result(size, size, QImage::Format_ARGB32_Premultiplied); QPainter painter(&result); int counter = 0; for (QVariantList::iterator j = onloads.begin(); j != onloads.end(); j++) { QString path = ":/"+(*j).toString(); QImageReader reader; reader.setFileName(path); QImage image = reader.read(); painter.drawImage(0, 0, image); // xi, yi is the position for imagei qDebug() << "Generating face Avatar from: " << (*j).toString(); // Print QVariant counter++; } painter.end(); // Transform image into PNG format QByteArray ba; QBuffer buffer( &ba ); buffer.open( QIODevice::WriteOnly ); result.save( &buffer, "png" ); // Get Based 64 image string QString encoded = QString(ba.toBase64()); return encoded; } };