سؤال

لدي التعليمات البرمجية التالية.

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

لذلك، فإن المسار مثل هذا: - ملوثات الملفات الملوثات العضوية الثابتة - يقوم المستخدمون بتحديد التنسيق والملف - النظام يرسم المؤامرة على qpixmap - يحفظ qpixmap في الملف.

إنه يعمل ل PNG و BMP دون مشكلة، ولكن بالنسبة ل JPEG، JPG، JPG، إلخ يفشل.

كنت في جميع أنحاء وثائق كيو تي ولكنها لم تتمكن من العثور على أي تفاصيل. يجب أن تعمل فقط. أيه أفكار؟

أنا أستخدم Edition التجاري QT، 4.5.1 لنظام التشغيل Windows.
أنا أستخدم DLLs، QT ليس على الطريق.

لقد أدركت فقط أنني أرتبط بشكل ثابت إلى الطرف الثالث الكلاسيكي JPEG.LIB (برنامج JPEG Group's Group المستقل) الذي يستخدمه مكتبة أخرى.

هل من الممكن أن ينشأ الصراع أو شيء ما بسبب هذا؟

أو هو ببساطة أن البرنامج المساعد لم يتم تحميله بشكل صحيح.

هل كانت مفيدة؟

المحلول

ربما لا يمكن العثور على البرنامج المساعد ...

يمكنك إضافة مسار مكتبة إلى المشروع أو يمكنك ببساطة وضع مجلد ImageFormats بالقرب من ثنائي.

مجلد ImageFormats في الإضافات ..

(ربما لا يمكنك عرض صور JPEG أيضا)

نصائح أخرى

إذا كنت تقوم ببناء ثابت، فعليك إضافة QTPLUGIN += qjpeg إلى ملف .pro الخاص بك، بحيث ترتبط مكتبة JPEG الثابتة في ImageFormats بطلبك.

على الأرجح المفقود على الأرجح، وأفضل طريقة للعمل هو فقط سرد تنسيقات الصور التي يدعمها مجموعة الأدوات.

هذا المثال هو من صورتي الإدراج ولكن يجب أن تكون قادرا على تكييفها من أجل حفظ ك:

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

كما نفقد التنسيقات في بعض الأحيان إذا قام المطور بنسخ تصميم تصحيح لآلة ضمان الجودة. سيبحث إصدار التصحيح عن إضافات Debug وفشل في تحميلها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top