Salvataggio QPixmap in JPEG mancanza (Qt 4.5)
Domanda
Ho il seguente codice.
QString fileName = QFileDialog::getSaveFileName(
this,
tr("Output Image file"),
(""),
tr("PNG (*.png);;JPEG (*.JPEG);;Windows Bitmap (*.bmp);;All Files (*.*)")
);
if(fileName != "")
{
QwtPlot* pPlot = ...
QSize size = pPlot->size();
QRect printingRect(QPoint(0, 0), size);
QPixmap pixmapPrinter(size);
pixmapPrinter.fill(Qt::white);
{
QPainter painter(&pixmapPrinter);
pPlot->print(&painter, printingRect);
}
bool isOk = pixmapPrinter.save(fileName);
if(!isOk)
{
QString msgText = tr("Failed to write into ") + fileName;
QMessageBox::critical(this, tr("Error Writing"), msgText);
}
}
Quindi, il percorso è in questo modo: - finestra di dialogo File apre - gli utenti di selezionare il formato e il file - il sistema attinge trama sul QPixmap - Salva QPixmap nel file
.Si lavora per PNG e BMP senza un problema, ma per JPEG, JPG, JPG, ecc fallisce.
Sono stato tutto la documentazione Qt, ma non sono riuscito a trovare alcun dettaglio. Si deve solo lavorare. Tutte le idee?
Sto usando Qt edizione commerciale, 4.5.1 per Windows.
Sto usando DLL, Qt non è sul percorso.
Ho appena realizzato che stanno collegando staticamente ad un jpeg.lib classica 3rd party (software JPEG del gruppo indipendente JPEG), che viene utilizzato da altra libreria.
E 'possibile che un conflitto o qualcosa si pone a causa di questo?
O è semplicemente che plugin non è caricata correttamente.
Soluzione
probabilmente cant trovare il plugin ...
è possibile aggiungere percorso di libreria al progetto o si può semplicemente mettere imageformats cartella vicino al binario.
cartella imageformats è in plugins ..
(probabilmente non puoi visualizzare immagini jpeg troppo)
Altri suggerimenti
Se si sta facendo un accumulo di elettricità statica, si deve aggiungere QTPLUGIN += qjpeg
al file .pro, in modo che la libreria jpeg statica dei imageformats è collegata con l'applicazione.
Il plugin è molto probabile che manca, modo migliore per lavorare è solo da sfogliare formati di immagine che il toolkit supporta.
Questo esempio è dalla mia immagine inserto, ma si dovrebbe essere in grado di adattarlo per il vostro Salva con nome:
QString fileFormats = "(";
/* Get all inputformats */
for (int i = 0; i < QImageReader::supportedImageFormats().count(); i++) {
fileFormats += "*."; /* Insert wildcard */
fileFormats
+= QString(QImageReader::supportedImageFormats().at(i)).toLower(); /* Insert the format */
fileFormats += " "; /* Insert a space */
}
fileFormats += ")";
QString fileName = QFileDialog::getOpenFileName(this, tr("Open Image"),
currentPath, tr("Images ") + fileFormats);
Anche a volte ci perdiamo formati se uno sviluppatore copia un debug a una macchina QA. La versione di debug sarà alla ricerca dei plugin di debug e non riescono a caricarli.