Попытка загрузить изображение в Blackberry Cascades QT и QML

Я пытаюсь загрузить изображения в Blackberry Cascades, C ++, QT.

Я в основном использую код, который выглядит так:

void MyClass::download() {

QUrl url(imagePath);
QNetworkRequest request(url);
Q_ASSERT(connect(networkAccessManager_, SIGNAL(finished(QNetworkReply *)), this, SLOT(saveImage(QNetworkReply *))));

networkAccessManager_->get(request);

}

void MyClass::saveImage(QNetworkReply *) {
QByteArray imageData = reply->readAll();

if (reply->error() != QNetworkReply::NoError) {
qDebug() << "an error occured downloading the image";
return;
}

qDebug() << imageData;
//...

Когда я делаю это, imageData просто содержит: «Ã¿Ã˜Ã¿Ã, вместо всего содержимого изображения, которое я скачал.

Может кто-нибудь объяснить мне это? И как я могу заставить это работать?

1

Решение

Он в форме QByteArray, поэтому он показывает так. Просто передайте его в конструктор объекта Image следующим образом:

Image image = Image(reply->readAll());
imageView->setImage(image);

Он должен работать. Если этого не произойдет, изображение будет слишком большим, чтобы поместиться в ImageView. Максимальные размеры изображения, которое может обрабатываться каскадом ImageView, равно 2048. Поэтому вам, возможно, придется использовать класс ImageData для репликации большого изображения в каскад ImageView.

Также попробуйте загрузить изображение с этого URL У меня с этим работает URL без использования класса ImageData

3

Другие решения

Возможно, вы захотите проверить, перенаправляет ли QNetworkReply вас к реальному изображению. Если это так, вы получите новый QUrl, который будет использоваться для получения нового запроса. Проверьте документацию для QNetworkRequest :: Атрибуты

void MyClass::saveImage(QNetworkReply *reply) {
QUrl redirect = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl();
if( redirect.isValid() ) {
QNetworkRequest request(redirect);
networkAccessManager_->get(request);
}
else {
QByteArray imageData = reply->readAll();

if (reply->error() != QNetworkReply::NoError) {
qDebug() << "an error occured downloading the image";
return;
}

qDebug() << imageData;
}
}
0

На самом деле я думаю, что изображение загружается. Я думал, что загружалось всего несколько байтов, но на самом деле это было больше, чем просто несколько байтов — вот почему закрывающая кавычка не появлялась при распечатке с помощью qDebug (все изображение помещается в одну строку).

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector