Anzeige:
Ergebnis 1 bis 9 von 9

Thema: qt addResource jpg und gif Bilder anzeigen

  1. #1
    Registrierter Benutzer
    Registriert seit
    02.08.2008
    Beiträge
    177

    qt addResource jpg und gif Bilder anzeigen

    Hi,

    ich würde gern mit qt ein html-Dokument laden in welchem sich auch Bilder befinden.
    laden tue ich das Bild mit:
    Code:
    Browser->document()->addResource( QTextDocument::ImageResource, 
    QUrl( fileinfo_picture->fileName() ), 
    QPixmap(fileinfo_picture->absoluteFilePath()) ) ;
    doch ich kann unter xp nur bmp und png Bilder anzeigen, keine *.jpg oder *.gif. Unter Linux und 2000 habe ich damit keine Probleme.
    Auch verwundert es mich ein wenig, da es offizell auch unter xp mit der opensource version gehen soll.

    Weiß jemand rat ?

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Möglicherweise hat configure unter Windows andere Defaultwerte für die Unterstützung dieser Formate und sie wurden daher nicht einkompiliert.

    Die KDE-on-Windows Leute haben vermutlich eine entsprechend konfigurierte Bibliothek schon fertig http://windows.kde.org/

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer
    Registriert seit
    02.08.2008
    Beiträge
    177
    Ich glaube ich habe die Anleitung dazu falsch verstanden.
    Ich dachte qt könnte native gif + jpg lesen doch nur mit den mit compilierten lib's diese auch bearbeiten. Doch es wird sich wohl dabei um das lesen handeln.

    Installiere gerade qt nochmal mit den Bibliotheken neu, hoffen wir das beste!

  4. #4
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Deine Variante funktioniert nicht immer, das gleiche Problem hatte ich auch schon einmal, hier ein auszug einer meiner Klassen die immer funktioniert.
    Wichtig ist hierbei das QImage als QVariant übergeben wird.
    PHP-Code:
    bool TextEditor::InsertImage ( const QString &file )
    {
      
    QUrl Uri QString "file://%1" ).arg file ) );
      
    QImage image QImageReader file ).read();
      
    m_QTextDocument->addResource QTextDocument::ImageResourceUriQVariant image ) );

      
    QTextCursor cursor textCursor();
      
    QTextImageFormat imageFormat;
      
    imageFormat.setWidth image.width() );
      
    imageFormat.setHeight image.height() );
      
    imageFormat.setName file );
      
    cursor.insertImage imageFormatQTextFrameFormat::InFlow );
      
    setLineWrapColumnOrWidth lineWrapColumnOrWidth() );
      
    PrepareDocumentContent();
      return 
    true;

    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  5. #5
    Registrierter Benutzer
    Registriert seit
    02.08.2008
    Beiträge
    177
    Hi,
    erstmal wieder recht herzlichen dank für eure Hilfe.
    Doch es will einfach nicht klappen.


    if (fileinfo_picture->exists() && fileinfo_picture->isFile() && fileinfo_picture->size()>0 ){
    qDebug()<<"fileName()="<<fileinfo_picture->fileName()<<"absoluteFilePath()="<<fileinfo_pictu re->absoluteFilePath();

    QImage image = QImageReader ( fileinfo_picture->absoluteFilePath() ).read();
    Browser->document()->addResource ( QTextDocument::ImageResource, QUrl("file://"+fileinfo_picture->fileName()), QVariant ( image ) );

    QTextCursor cursor(Browser->document());
    QTextImageFormat imageFormat;
    imageFormat.setWidth ( image.width() );
    imageFormat.setHeight ( image.height() );
    imageFormat.setName ( "file://"+fileinfo_picture->fileName());
    cursor.insertImage ( imageFormat, QTextFrameFormat::InFlow );
    Browser->setLineWrapColumnOrWidth ( Browser->lineWrapColumnOrWidth() );
    //Browser->document()->PrepareDocumentContent(); <-???
    /**/
    }
    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\Qt\include\QtCore" -I"..\..\Qt\include\QtCore" -I"..\..\Qt\include\QtGui" -I"..\..\Qt\include\QtGui" -I"..\..\Qt\include" -I"." -I"e:\Qt\include\ActiveQt" -I"debug" -I"." -I"..\..\Qt\mkspecs\win32-g++" -o debug\cocktail.o cocktail.cpp
    g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows -o debug\Cocktails.exe object_script.Cocktails.Debug -L"e:\Qt\lib" -lmingw32 -lqtmaind -lQtGuid4 -lQtCored4 -lqjpegd4
    Das merkwuerdige ist auch, dass png,... funktioniert nur halt jpg nicht, obwohl ich sie extra eingebunden habe.

  6. #6
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Versuch mal unter win die Bibliotheken statisch zu binden.
    Code:
    ## *.pro
    QTPLUGIN += qjpeg \
                     qgif
    
    ..............
    ## main.cpp
    Q_IMPORT_PLUGIN(qjpeg)
    Q_IMPORT_PLUGIN(qgif)
    
     int main(int argc, char *argv[])
     {
         QApplication app(argc, argv);
         ...
         return app.exec();
     }
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  7. #7
    Registrierter Benutzer
    Registriert seit
    02.08.2008
    Beiträge
    177
    Mhmmm ... lasst es mich mal so ausdrücken
    hurra, hurra, hura .... !

    amüsant auch das die beiden in der Qt Doku zu Q_IMPORT_PLUGGIN stehen, nicht aber bei QImage darauf hingewiesen wird.

    Vielen dank!!!
    Hab ca. zwei Wochen darüber gegrübelt.
    Geändert von dml (27-10-2008 um 18:06 Uhr)

  8. #8
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Das liegt daran das der PLUGIN Loader keinen mugs macht wenn er kein Plugin findet.
    Dafür gibt es eine debugger variable.
    Aber direkt im vorraus es geht auch dynamisch in dem du eine qt.conf unter Windows im Application dir setzt.
    Folgenden Variablen lassen sich beeinflussen.
    Code:
    [Paths]
    Prefix = c:\...
    Bins = 
    Libs = 
    Translations =
    Spätestens wenn du dein Programm veröffentlichen möchtest kommst du an der qt.conf nicht mehr vorbei weil die meisten die Bibliotheken ja nicht Installiert haben.

    Nachtrag:
    Dabei muss deine Plugin Struktur im Installations Verzeichnis mit der Standard QT Installation Identisch sein. Es wird von "Libs" ausgegangen.
    Also z.B:
    Code:
    [Paths]
    Libs = c:\Programme\Meinprog
    Sucht also das plugin im Verzeichnis Unterordner c:\Programme\Meinprog\imageformats
    Geändert von undefined (28-10-2008 um 17:24 Uhr)
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  9. #9
    Registrierter Benutzer
    Registriert seit
    02.08.2008
    Beiträge
    177
    Das Problem mit den Bibs habe ich momentan so gelößt, das ich qt noch einmal statisch kompeliert habe und anschließend noch die mingwm10.dll hinzufüge, wenn ich es nicht vergesse.


    trotzdem vielen dank!
    dml
    Geändert von dml (13-11-2008 um 22:11 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •