IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau Discussion :

Téléchargement d'image très lent


Sujet :

Réseau

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 69
    Par défaut Téléchargement d'image très lent
    Bonjour tout le monde
    je suis (encore :p) débutant en Qt je dois télécharger une image de mon serveur et de l’afficher dans mon application (pour symbian) j’ai suivi ce tutoriel (ici) avec QNetworkAcessManager et ça marche a merveille le problème c’est que ça prend beaucoup de temps (presque 12 sec pour une image de 10 ko) j’ai même travailler en local mais le même problème

    si quelqu’un peut m’aider pour accélérer un peu ce téléchargement

    Merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 69
    Par défaut
    voici le code que j'utilise (désolé de pas l’avoir mis dés le début

    le fichier .pro

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
     
    folder_01.source = qml/interface_V2_3
    folder_01.target = qml
    DEPLOYMENTFOLDERS = folder_01
     
    QML_IMPORT_PATH =
     
    symbian:TARGET.UID3 = 0xE58E7304
     
    symbian:TARGET.CAPABILITY += NetworkServices
     
    CONFIG += qt-components
     
    # The .cpp file which was generated for your project. Feel free to hack it.
    SOURCES += main.cpp \
        imageprovider.cpp \
        imagedownloader.cpp \
        Http.cpp \
        etat.cpp \
        connection.cpp \
        compte.cpp \
        Auto.cpp
     
    # Please do not modify the following two lines. Required for deployment.
    include(qmlapplicationviewer/qmlapplicationviewer.pri)
    qtcAddDeployment()
     
    HEADERS += \
        imageprovider.h \
        imagedownloader.h \
        Http.h \
        etat.h \
        connection.h \
        compte.h \
        Auto.h
     
     
    ICON = interface_V2_3.svg
     
    QT  += network gui


    imagedownloader.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    #ifndef IMAGEDOWNLOADER_H
    #define IMAGEDOWNLOADER_H
     
    #include <QObject>
    #include <QImage>
    #include <QtNetwork>
    #include <QUrl>
     
    class ImageDownloader : public QObject
    {
        Q_OBJECT
     
    private:
        static ImageDownloader* imageDownloader;
     
        QImage img;
     
    signals:
        void downloadImg_success();
     
    public:
        static ImageDownloader* getInstance();
     
        QImage getImg(){return img;}
        void setImg(QImage i){img = i;}
     
    public slots:
        void downloadImg(QUrl url);
        void downloadImg_finished(QNetworkReply *reply);
     
    };
     
    #endif // IMAGEDOWNLOADER_H
    )


    imagedownloader.cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    #include "ImageDownloader.h"
     
    // Init
    ImageDownloader *ImageDownloader::imageDownloader = NULL;
     
    ImageDownloader* ImageDownloader::getInstance()
    {
        if (NULL == imageDownloader)
        {
            imageDownloader = new ImageDownloader;
        }
        return imageDownloader;
    }
     
    void ImageDownloader::downloadImg(QUrl  url)
    {
        QNetworkAccessManager *nam;
        nam = new QNetworkAccessManager(this);
        connect(nam,SIGNAL(finished(QNetworkReply*)),this,SLOT(downloadImg_finished(QNetworkReply*)));
     
       // QUrl url = QUrl("http://district.netii.net/pub/bmw.jpg");
     
        QNetworkRequest requete(url);
     
        QByteArray postData;
     
        QNetworkReply *r = nam->post(requete, postData);
        //qDebug();
    }
     
    void ImageDownloader::downloadImg_finished(QNetworkReply *reply)
    {
        reply->open(QIODevice::ReadOnly);
     
        if(reply->error() == QNetworkReply::NoError)
        {
            QByteArray b = reply->readAll();
            QImage imgTmp;
            imgTmp.loadFromData(b);
            ImageDownloader::getInstance()->setImg(imgTmp);
     
            emit downloadImg_success();
        }
        else
        {
            qDebug() << reply->errorString();
        }
    }

    imageprovider.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    #ifndef IMAGEPROVIDER_H
    #define IMAGEPROVIDER_H
     
    #include <qdeclarativeextensionplugin.h>
    #include <qdeclarativeengine.h>
    #include <qdeclarative.h>
    #include <qdeclarativeitem.h>
    #include <qdeclarativeimageprovider.h>
    #include <qdeclarativeview.h>
    #include <QImage>
    #include <QPainter>
     
    class ImageProvider : public QDeclarativeImageProvider
    {
     
    public:
        ImageProvider(): QDeclarativeImageProvider(QDeclarativeImageProvider::Image){}
        QImage requestImage(const QString &id, QSize *size, const QSize &requestedSize);
    };
     
    #endif // IMAGEPROVIDER_H

    imageprovider.cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    #include <QApplication>
     
    #include "ImageProvider.h"
    #include "ImageDownloader.h"
     
    QImage ImageProvider::requestImage(const QString &id, QSize *size, const QSize &requestedSize)
    {
     
        if(id == "image")
            return ImageDownloader::getInstance()->getImg();
     
        //si non trouvé
        QImage img;
     
        return img;
    }
    main.cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
     
    #include <QtGui/QApplication>
    #include <QDeclarativeContext>
    #include "ImageDownloader.h"
    #include "ImageProvider.h"
    #include <QDebug>
    #include "qmlapplicationviewer.h"
     
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
     
        QmlApplicationViewer viewer;
        viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
        viewer.setMainQmlFile(QLatin1String("qml/interface_V2/PremierPage.qml"));
        viewer.rootContext()->setContextProperty("imageDownloader", ImageDownloader::getInstance());
        viewer.engine()->addImageProvider("drawable", new ImageProvider);
        viewer.showExpanded();
     
        return app.exec();
    }

    et dans mon fichier QML j'ai mis la ligne suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    imageDownloader.downloadImg("http://district.netii.net/pub/bmw.jpg");

    et voila le tout

Discussions similaires

  1. BDD sur réseau très très très lent...
    Par ericain dans le forum Access
    Réponses: 12
    Dernier message: 20/02/2015, 17h17
  2. [Débuter] Téléchargement d'image très lent
    Par alibouche dans le forum Réseau
    Réponses: 0
    Dernier message: 09/12/2011, 13h09
  3. Téléchargement et lancement JWS très lents
    Par zafo dans le forum Glassfish et Payara
    Réponses: 3
    Dernier message: 08/06/2011, 09h17
  4. Défilement d'une image très lent sous IE
    Par supergrey dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 03/03/2010, 18h50
  5. Treeview liste d'images + champ image : très lent, comment faire ?
    Par Cazaux-Moutou-Philippe dans le forum WinDev
    Réponses: 3
    Dernier message: 01/11/2006, 17h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo