ciao MItaly!

Quote Originariamente inviata da MItaly Visualizza il messaggio
Rispetto al costo di caricare/ridimensionare/salvare un'immagine sono tutte distinzioni completamente irrilevanti. Volendo puoi metterti da parte l'operazione da fare in una std::function, ma di nuovo, non c'è nessun guadagno a farlo.

Piuttosto, c'è un errore grosso sia dal punto di vista della correttezza che da quello delle prestazioni: stai usando una QPixmap. Questo è male perché:
- le QPixmap possono essere usate solo dal thread della GUI, mentre tu le stai usando da un worker thread;
- le QPixmap sono bitmap ottimizzate per il disegno rapido su schermo, non per la manipolazione; in pratica, possono essere implementate come un wrapper attorno alle bitmap della libreria grafica sottostante (su X11 fino a Qt4 erano dei reference a bitmap X11; sotto Qt5, il backend Direct2D le usa come puntatori a texture tenute in memoria video) in modo che siano velocissime da disegnare a schermo, ma accedere ai loro pixel può essere più complicato.

Per questi motivi, in generale per effettuare manipolazioni di immagini usa le QImage, non le QPixmap.
quindi, in sostanza, secondo te devo solo modificare QPixamp con QImage?
codice:
void ImageResize::resize(QString inputImage, QString dir, int width, int height)
{
    QFileInfo f(inputImage);
    QImage pixmap(inputImage);
    QImage newPixmap;
    if (width == 0)
    {
        newPixmap = pixmap.scaledToHeight(height, Qt::SmoothTransformation);
    }
    else if (height == 0)
    {
        newPixmap = pixmap.scaledToWidth(width, Qt::SmoothTransformation);
    }
    else
    {
        newPixmap = pixmap.scaled(width, height, Qt::KeepAspectRatio, Qt::SmoothTransformation);
    }
    QFile file(dir + f.fileName());
    file.open(QIODevice::WriteOnly);
    newPixmap.save(&file, 0, 100);
    file.close();
}