From 63ed194365a6fe456c2150b83e24d8f801e49126 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Sat, 30 Apr 2022 21:09:59 +0200 Subject: Fix image scale/crop in recipe list. --- src/mainwindow.cc | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/mainwindow.cc b/src/mainwindow.cc index f5c9d9d..cb68039 100644 --- a/src/mainwindow.cc +++ b/src/mainwindow.cc @@ -33,6 +33,7 @@ #include #include #include +#include #include "database.h" #include "viewer.h" @@ -94,10 +95,10 @@ void MainWindow::readDatabase() { QListWidgetItem* listItem = new QListWidgetItem(); listItem->setText(QString::fromUtf8(item.title.data())); + + QImage image; if(!item.image.empty()) { - QIcon icon; - QImage image; if(item.image.substr(0, 4) == "/9j/") // Image is base64 encoded { QByteArray data = QByteArray::fromBase64(QByteArray(item.image.data(), item.image.size())); @@ -107,18 +108,27 @@ void MainWindow::readDatabase() { image = QImage::fromData((const uchar*)item.image.data(), item.image.size()); } - icon.addPixmap(QPixmap::fromImage(image)); - listItem->setIcon(icon); + //image = image.scaled(128, 128, Qt::KeepAspectRatioByExpanding); + int h = image.height(); + int w = image.width(); + if(h > w) + { + image = image.copy({0, (h - w)/2, w, w}); + } + else + { + image = image.copy({(w - h)/2, 0, h, h}); + } } else { - QIcon icon; - QImage image(QSize({1,1}), QImage::Format_RGBA8888); + image = QImage(QSize({64,64}), QImage::Format_RGBA8888); image.fill(0); - icon.addPixmap(QPixmap::fromImage(image)); - listItem->setIcon(icon); } listItem->setData(Qt::UserRole, item.id); + + icon.addPixmap(QPixmap::fromImage(image)); + listItem->setIcon(icon); listWidget->addItem(listItem); } } -- cgit v1.2.3