Don't send thumbnails that are larger than the original

- Set PNG compression to maximum
- Don't upload thumbnail if it is not at least 10% smaller than  the
  original
This commit is contained in:
tastytea 2022-03-24 19:34:20 +01:00
parent c59c8b6f3c
commit 179ae53b40
No known key found for this signature in database
1 changed files with 39 additions and 31 deletions

View File

@ -896,11 +896,18 @@ MediaUpload::startUpload()
QByteArray ba; QByteArray ba;
QBuffer buffer(&ba); QBuffer buffer(&ba);
buffer.open(QIODevice::WriteOnly); buffer.open(QIODevice::WriteOnly);
thumbnail_.save(&buffer, "PNG"); thumbnail_.save(&buffer, "PNG", 0);
if (ba.size() >= (data.size() - data.size() / 10)) {
nhlog::ui()->info(
"Thumbnail is not a lot smaller than original image, not uploading it");
nhlog::ui()->debug(
"\n Image size: {:9d}\nThumbnail size: {:9d}", data.size(), ba.size());
} else {
auto payload = std::string(ba.data(), ba.size()); auto payload = std::string(ba.data(), ba.size());
if (encrypt_) { if (encrypt_) {
mtx::crypto::BinaryBuf buf; mtx::crypto::BinaryBuf buf;
std::tie(buf, thumbnailEncryptedFile) = mtx::crypto::encrypt_file(std::move(payload)); std::tie(buf, thumbnailEncryptedFile) =
mtx::crypto::encrypt_file(std::move(payload));
payload = mtx::crypto::to_string(buf); payload = mtx::crypto::to_string(buf);
} }
thumbnailSize_ = payload.size(); thumbnailSize_ = payload.size();
@ -930,6 +937,7 @@ MediaUpload::startUpload()
}); });
return; return;
} }
}
auto payload = std::string(data.data(), data.size()); auto payload = std::string(data.data(), data.size());
if (encrypt_) { if (encrypt_) {