diff --git a/retroshare-gui/src/gui/PhotoShare/AlbumGroupDialog.cpp b/retroshare-gui/src/gui/PhotoShare/AlbumGroupDialog.cpp
index dd0c725b7..2900ad674 100644
--- a/retroshare-gui/src/gui/PhotoShare/AlbumGroupDialog.cpp
+++ b/retroshare-gui/src/gui/PhotoShare/AlbumGroupDialog.cpp
@@ -115,7 +115,7 @@ void AlbumGroupDialog::prepareAlbumGroup(RsPhotoAlbum &group, const RsGroupMetaD
QBuffer buffer(&ba);
buffer.open(QIODevice::WriteOnly);
- pixmap.save(&buffer, "JPG"); // writes image into ba in PNG format
+ pixmap.save(&buffer, "PNG"); // writes image into ba in PNG format
group.mThumbnail.copy((uint8_t *) ba.data(), ba.size());
} else {
diff --git a/retroshare-gui/src/gui/Posted/PostedCreatePostDialog.cpp b/retroshare-gui/src/gui/Posted/PostedCreatePostDialog.cpp
index c1e0ce5ad..aace423f8 100644
--- a/retroshare-gui/src/gui/Posted/PostedCreatePostDialog.cpp
+++ b/retroshare-gui/src/gui/Posted/PostedCreatePostDialog.cpp
@@ -224,7 +224,7 @@ void PostedCreatePostDialog::addPicture()
}
QImage opt;
- if(ImageUtil::optimizeSizeBytes(imagebytes, image, opt, 640*480, MAXMESSAGESIZE - 2000)) { //Leave space for other stuff
+ if(ImageUtil::optimizeSizeBytes(imagebytes, image, opt,"JPG", 640*480, MAXMESSAGESIZE - 2000)) { //Leave space for other stuff
ui->imageLabel->setPixmap(QPixmap::fromImage(opt));
ui->stackedWidgetPicture->setCurrentIndex(IMG_PICTURE);
ui->removeButton->show();
diff --git a/retroshare-gui/src/gui/TheWire/WireGroupDialog.cpp b/retroshare-gui/src/gui/TheWire/WireGroupDialog.cpp
index 139961640..e13cd4f8f 100644
--- a/retroshare-gui/src/gui/TheWire/WireGroupDialog.cpp
+++ b/retroshare-gui/src/gui/TheWire/WireGroupDialog.cpp
@@ -126,7 +126,7 @@ void WireGroupDialog::prepareWireGroup(RsWireGroup &group, const RsGroupMetaData
QBuffer buffer(&ba);
buffer.open(QIODevice::WriteOnly);
- pixmap.save(&buffer, "JPG");
+ pixmap.save(&buffer, "PNG");
group.mMasthead.copy((uint8_t *) ba.data(), ba.size());
} else {
diff --git a/retroshare-gui/src/gui/chat/ChatWidget.cpp b/retroshare-gui/src/gui/chat/ChatWidget.cpp
index 880b5a640..72e2db1d8 100644
--- a/retroshare-gui/src/gui/chat/ChatWidget.cpp
+++ b/retroshare-gui/src/gui/chat/ChatWidget.cpp
@@ -1677,7 +1677,7 @@ void ChatWidget::addExtraPicture()
if (misc::getOpenFileName(window(), RshareSettings::LASTDIR_IMAGES, tr("Load Picture File"), "Pictures (*.png *.xpm *.jpg *.jpeg *.gif *.webp )", file)) {
QString encodedImage;
uint32_t maxMessageSize = this->maxMessageSize();
- if (RsHtml::makeEmbeddedImage(file, encodedImage, 640*480, maxMessageSize - 200)) { //-200 for the html stuff
+ if (RsHtml::makeEmbeddedImage(file, encodedImage, 640*480, maxMessageSize - 200)) { //-200 for the html stuff
QTextDocumentFragment fragment = QTextDocumentFragment::fromHtml(encodedImage);
ui->chatTextEdit->textCursor().insertFragment(fragment);
}
diff --git a/retroshare-gui/src/gui/gxsforums/GxsForumModel.cpp b/retroshare-gui/src/gui/gxsforums/GxsForumModel.cpp
index 07d44ca1b..77292dadf 100644
--- a/retroshare-gui/src/gui/gxsforums/GxsForumModel.cpp
+++ b/retroshare-gui/src/gui/gxsforums/GxsForumModel.cpp
@@ -566,7 +566,7 @@ QVariant RsGxsForumModel::toolTipRole(const ForumModelPostEntry& fmpe,int column
QImage pix( (*icons.begin()).pixmap(QSize(5*S,5*S)).toImage());
QString embeddedImage;
- if(RsHtml::makeEmbeddedImage(pix.scaled(QSize(5*S,5*S), Qt::KeepAspectRatio, Qt::SmoothTransformation), embeddedImage, -1))
+ if(RsHtml::makeEmbeddedImage(pix.scaled(QSize(5*S,5*S), Qt::KeepAspectRatio, Qt::SmoothTransformation), embeddedImage, -1))
{
embeddedImage.insert(embeddedImage.indexOf("src="), "style=\"float:left\" ");
comment = "
" + embeddedImage + " | " + comment + " |
";
diff --git a/retroshare-gui/src/util/HandleRichText.cpp b/retroshare-gui/src/util/HandleRichText.cpp
index bba7c03af..6f6eec750 100644
--- a/retroshare-gui/src/util/HandleRichText.cpp
+++ b/retroshare-gui/src/util/HandleRichText.cpp
@@ -1216,7 +1216,7 @@ bool RsHtml::makeEmbeddedImage(const QString &fileName, QString &embeddedImage,
fprintf (stderr, "RsHtml::makeEmbeddedImage() - image \"%s\" can't be load\n", fileName.toLatin1().constData());
return false;
}
- return RsHtml::makeEmbeddedImage(image, embeddedImage, maxPixels, maxBytes);
+ return RsHtml::makeEmbeddedImage(image, embeddedImage, maxPixels, maxBytes);
}
/** Converts image to embedded image HTML fragment **/
@@ -1224,7 +1224,7 @@ bool RsHtml::makeEmbeddedImage(const QImage &originalImage, QString &embeddedIma
{
rstime::RsScopeTimer s("Embed image");
QImage opt;
- return ImageUtil::optimizeSizeHtml(embeddedImage, originalImage, opt, maxPixels, maxBytes);
+ return ImageUtil::optimizeSizeHtml(embeddedImage, originalImage, opt, maxPixels, maxBytes);
}
QString RsHtml::plainText(const QString &text)
diff --git a/retroshare-gui/src/util/HandleRichText.h b/retroshare-gui/src/util/HandleRichText.h
index 9462ba865..3e98ea21c 100644
--- a/retroshare-gui/src/util/HandleRichText.h
+++ b/retroshare-gui/src/util/HandleRichText.h
@@ -70,7 +70,7 @@ public:
static QString toHtml(QString text, bool realHtml = true);
static bool makeEmbeddedImage(const QString &fileName, QString &embeddedImage, const int maxPixels, const int maxBytes = -1);
- static bool makeEmbeddedImage(const QImage &originalImage, QString &embeddedImage, const int maxPixels, const int maxBytes = -1);
+ static bool makeEmbeddedImage(const QImage &originalImage, QString &embeddedImage, const int maxPixels, const int maxBytes = -1);
static QString plainText(const QString &text);
static QString plainText(const std::string &text);
diff --git a/retroshare-gui/src/util/imageutil.cpp b/retroshare-gui/src/util/imageutil.cpp
index 92ce05f70..ca87f534f 100644
--- a/retroshare-gui/src/util/imageutil.cpp
+++ b/retroshare-gui/src/util/imageutil.cpp
@@ -68,12 +68,12 @@ void ImageUtil::extractImage(QWidget *window, QTextCursor cursor, QString file)
}
}
-bool ImageUtil::optimizeSizeBytes(QByteArray &bytearray, const QImage &original, QImage &optimized, int maxPixels, int maxBytes)
+bool ImageUtil::optimizeSizeBytes(QByteArray &bytearray, const QImage &original, QImage &optimized, const char *format, int maxPixels, int maxBytes)
{
//nothing to do if it fits into the limits
optimized = original;
if ((maxPixels <= 0) || (optimized.width()*optimized.height() <= maxPixels)) {
- int s = checkSize(bytearray, optimized);
+ int s = checkSize(bytearray, optimized,format);
if((maxBytes <= 0) || (s <= maxBytes)) {
return true;
}
@@ -92,7 +92,7 @@ bool ImageUtil::optimizeSizeBytes(QByteArray &bytearray, const QImage &original,
//if maxBytes not defined, do not reduce color space, just downscale
if(maxBytes <= 0) {
- checkSize(bytearray, optimized = original.scaledToWidth(maxwidth, Qt::SmoothTransformation));
+ checkSize(bytearray, optimized = original.scaledToWidth(maxwidth, Qt::SmoothTransformation),format);
return true;
}
@@ -100,9 +100,9 @@ bool ImageUtil::optimizeSizeBytes(QByteArray &bytearray, const QImage &original,
quantization(original, ct);
//Use binary search to find a suitable image size + linear regression to guess the file size
- double maxsize = (double)checkSize(bytearray, optimized = original.scaledToWidth(maxwidth, Qt::SmoothTransformation).convertToFormat(QImage::Format_Indexed8, ct, Qt::ThresholdDither));
+ double maxsize = (double)checkSize(bytearray, optimized = original.scaledToWidth(maxwidth, Qt::SmoothTransformation).convertToFormat(QImage::Format_Indexed8, ct, Qt::ThresholdDither),format);
if(maxsize <= maxBytes) return true; //success
- double minsize = (double)checkSize(bytearray, optimized = original.scaledToWidth(minwidth, Qt::SmoothTransformation).convertToFormat(QImage::Format_Indexed8, ct, Qt::ThresholdDither));
+ double minsize = (double)checkSize(bytearray, optimized = original.scaledToWidth(minwidth, Qt::SmoothTransformation).convertToFormat(QImage::Format_Indexed8, ct, Qt::ThresholdDither),format);
if(minsize > maxBytes) return false; //impossible
// std::cout << "maxS: " << maxsize << " minS: " << minsize << std::endl;
@@ -115,7 +115,7 @@ bool ImageUtil::optimizeSizeBytes(QByteArray &bytearray, const QImage &original,
double b = maxsize - m * ((double)maxwidth * (double)maxwidth / whratio);
double a = ((double)(maxBytes - region/2) - b) / m; //maxBytes - region/2 target the center of the accepted region
int nextwidth = (int)sqrt(a * whratio);
- int nextsize = checkSize(bytearray, optimized = original.scaledToWidth(nextwidth, Qt::SmoothTransformation).convertToFormat(QImage::Format_Indexed8, ct, Qt::ThresholdDither));
+ int nextsize = checkSize(bytearray, optimized = original.scaledToWidth(nextwidth, Qt::SmoothTransformation).convertToFormat(QImage::Format_Indexed8, ct, Qt::ThresholdDither),format);
if(nextsize <= maxBytes) {
minsize = nextsize;
minwidth = nextwidth;
@@ -145,7 +145,7 @@ bool ImageUtil::optimizeSizeHtml(QString &html, const QImage& original, QImage &
if(maxBytes < 1) maxBytes = 1;
}
- if(optimizeSizeBytes(bytearray, original, optimized, maxPixels, maxBytes))
+ if(optimizeSizeBytes(bytearray, original, optimized,"PNG",maxPixels, maxBytes))
{
QByteArray encodedByteArray = bytearray.toBase64();
html = "& palette);
static void quantization(QList::iterator begin, QList::iterator end, int depth, QVector& palette);
static void avgbucket(QList::iterator begin, QList::iterator end, QVector& palette);
diff --git a/retroshare-gui/src/util/misc.cpp b/retroshare-gui/src/util/misc.cpp
index dce286e60..84c408de3 100644
--- a/retroshare-gui/src/util/misc.cpp
+++ b/retroshare-gui/src/util/misc.cpp
@@ -291,7 +291,7 @@ bool misc::getOpenAvatarPicture(QWidget *parent, QByteArray &image_data)
// save image in QByteArray
QBuffer buffer(&image_data);
buffer.open(QIODevice::WriteOnly);
- picture.save(&buffer, "JPG"); // writes image into ba in JPG format
+ picture.save(&buffer, "PNG"); // writes image into ba in PNG format
return true;
}