Pregunta

Tengo el siguiente código.

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);
   }
}

Por lo tanto, la ruta es la siguiente: - Archivo de diálogo aparece - los usuarios selecciona el formato y el archivo - el sistema se basa en parcela QPixmap - Guarda QPixmap en el archivo

.

Funciona para PNG y BMP sin ningún problema, pero para JPEG, JPG, JPG, etc falla.

Yo era todo documentación de Qt, pero no pude encontrar ningún detalle. Sólo debe trabajar. ¿Alguna idea?

Estoy usando Qt edición comercial, 4.5.1 para Windows.
Estoy usando dlls, Qt no está en el camino.

Me he dado cuenta de que estoy enlazado estático a un jpeg.lib clásica tercera parte (el software JPEG del grupo Independent JPEG), que es utilizado por otra biblioteca.

¿Es posible que un conflicto o algo por causa de esto?

O es simplemente que el plugin no se ha cargado correctamente.

¿Fue útil?

Solución

probablemente no puede encontrar el plugin ...

puede agregar la ruta de biblioteca para proyectar o simplemente puede poner imageformats carpeta cerca de su binario.

carpeta imageformats está en plugins ..

(probablemente usted no puede mostrar imágenes JPEG también)

Otros consejos

Si usted está haciendo una acumulación estática, hay que añadir QTPLUGIN += qjpeg a su archivo .pro, por lo que la biblioteca jpeg estática de los imageformats está vinculado con la aplicación.

Tu lector es más probable que faltaba, la mejor manera de trabajar es por listado único formatos de imagen que admite el kit de herramientas.

Este ejemplo es de mi foto de inserción, pero debe ser capaz de adaptarlo para su guardar como:

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);

También a veces perdemos formatos Si un desarrollador copias de depuración construir una a una máquina de control de calidad. La versión de depuración será buscar los plugins de depuración y no se pueden cargar ellos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top