Outptstyle fixedp

This commit is contained in:
Torsten Schulz
2024-03-18 18:29:23 +01:00
parent 359f379b18
commit ba976db321
2 changed files with 51 additions and 16 deletions

View File

@@ -473,20 +473,43 @@ void App::imageUploaded(Wt::WFileUpload *fileWidget, std::shared_ptr<Magick::Blo
Magick::readImages(&originalImages, fileWidget->spoolFileName());
std::list<Magick::Image> previewList;
std::list<Magick::Image> localList;
std::transform(originalImages.begin(), originalImages.end(), std::back_inserter(previewList), [](const Magick::Image& img) { return img; });
std::transform(originalImages.begin(), originalImages.end(), std::back_inserter(localList), [](const Magick::Image& img) { return img; });
bool isAnimated = !originalImages.empty() && originalImages.front().scene() > 1;
if (isAnimated) {
Magick::coalesceImages(&previewList, previewList.begin(), previewList.end());
Magick::coalesceImages(&localList, localList.begin(), localList.end());
}
auto resize = [](std::string size, std::list<Magick::Image> &imagesList) {
for (auto &frame : imagesList) {
frame.resize(size);
// Maximale Größen für Vorschau und lokale Liste festlegen
int maxPreviewWidth = 100;
int maxPreviewHeight = 100;
int maxLocalWidth = 500;
int maxLocalHeight = 500;
// Originalgröße des ersten Bildes erhalten
int originalWidth = originalImages.front().columns();
int originalHeight = originalImages.front().rows();
// Vorschau- und lokale Größe berechnen
int previewWidth = std::min(originalWidth, maxPreviewWidth);
int previewHeight = std::min(originalHeight, maxPreviewHeight);
int localWidth = std::min(originalWidth, maxLocalWidth);
int localHeight = std::min(originalHeight, maxLocalHeight);
// Größenänderung für alle Frames durchführen
for (const auto& img : originalImages) {
// Größenänderung nur durchführen, wenn das Bild größer als die maximalen Größen ist
if (originalWidth > maxPreviewWidth || originalHeight > maxPreviewHeight) {
Magick::Image resizedPreview = img;
resizedPreview.resize(Magick::Geometry(previewWidth, previewHeight));
previewList.push_back(resizedPreview);
} else {
previewList.push_back(img); // Originalgröße beibehalten
}
};
resize("100x100^", previewList);
resize("500x500^", localList);
if (originalWidth > maxLocalWidth || originalHeight > maxLocalHeight) {
Magick::Image resizedLocal = img;
resizedLocal.resize(Magick::Geometry(localWidth, localHeight));
localList.push_back(resizedLocal);
} else {
localList.push_back(img); // Originalgröße beibehalten
}
}
Magick::Blob resizedBlob;
Magick::writeImages(previewList.begin(), previewList.end(), &resizedBlob);
Magick::writeImages(localList.begin(), localList.end(), &(*localImage));
@@ -504,8 +527,6 @@ void App::imageUploaded(Wt::WFileUpload *fileWidget, std::shared_ptr<Magick::Blo
}
}
Magick::Image App::scaleImage(const Magick::Image& originalImage, int maxSize) const {
int scale = 100;
int maxDimension = std::max(originalImage.size().width(), originalImage.size().height());
@@ -613,6 +634,8 @@ void App::renderChatLine(Wt::Json::Object &line, Wt::Json::Object conversation,
item = new Wt::WText("");
}
item->setToolTip(line["timestamp"]);
item->setStyleClass("output-box-format");
item->addStyleClass(writer == "you" ? "ouput-box-format-self" : "output-box-format-other");
item->setInline(false);
}