Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
kionec
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 12
#1

Загрузка/просмотр изображения в БД

27.10.2015, 11:02. Просмотров 727. Ответов 10
Метки нет (Все метки)

Пишу на Qt, нужно загрузить(сохранить) изображение(jpg) в базе данных в MySQL.Загружаю в поле tinyblob.

Загружаю изображение в QImage:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
...
    QByteArray *qByteArray = new QByteArray();
    QBuffer *qBuffer = new QBuffer(qByteArray, this);
    if(img.byteCount()!=0)
   {
      qBuffer->open(QIODevice::WriteOnly);
      img.save(qBuffer,"JPG");
      qBuffer->close();
    }
 
...
//загружаю изображение в базу,
    rielt->query->bindValue(":pl",qByteArray->constData());
...
Вывожу из базы загруженное изображение:
C++ (Qt)
1
2
3
4
5
6
7
8
9
...
        QByteArray fromDB;
        fromDB=q.value(19).toByteArray();
        qDebug()<<fromDB;
        img.loadFromData(fromDB,"JPG");
        img.scaled(251,161,Qt::IgnoreAspectRatio,Qt::SmoothTransformation);
        ui->lblImg->setPixmap(QPixmap::fromImage(img));
        ui->lblImg->show();
...
При показе изображения(выводе) выдает ошибку:
Код
...
"\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD"
QImage::scaled: Image is a null image
"\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD\xEF\xBF\xBD"
QImage::scaled: Image is a null image
...
Судя по всему изображение загружается не правильно
Форумчане подскажите что я делаю не так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2015, 11:02
Ответы с готовыми решениями:

QT загрузка изображения
Добрый вечер! Есть код который загружает сначала ссылку на изображения в...

Загрузка изображения
Здравствуйте. Получил задание на написание приложения, с помощью которого можно...

Загрузка изображения в Qt
Здравствуйте! Подскажите, пожалуйста, нужно загружать изображение в Qt, а...

Загрузка изображения
Предположим у меня есть такой вот код, запускаю... #include &lt;QtGui&gt; int...

Загрузка изображения из Интернета
:senor: Доброго времени :D суток! Недавно позарез потребовалось загрузить...

10
RazrFalcon
1386 / 1243 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
27.10.2015, 11:17 #2
Размер fromDB какой?
0
kionec
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 12
27.10.2015, 11:58  [ТС] #3
fromDB пустой при инициализации.
QByteArray fromDB;
Смотрел примеры в google также не было инициализации.
0
RazrFalcon
1386 / 1243 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
27.10.2015, 12:29 #4
Цитата Сообщение от kionec Посмотреть сообщение
fromDB=q.value(19).toByteArray();
* * * * qDebug()<<fromDB;
У вас выводится всего пару символов. Значит размер мелкий. Значит это не изображение. Вы точно ту колонку открываете?
0
kionec
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 12
27.10.2015, 12:55  [ТС] #5
Уверен несколько раз проверял
0
Dmitriy_M
1422 / 1303 / 130
Регистрация: 20.03.2009
Сообщений: 4,657
Записей в блоге: 11
27.10.2015, 14:17 #6
Место
C++ (Qt)
1
q.value(19)
пиши
C++ (Qt)
1
q.value("column name")
0
kionec
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 12
27.10.2015, 14:29  [ТС] #7
q.value("column name").toByteArray();
Результат тот же.
0
RazrFalcon
1386 / 1243 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
27.10.2015, 16:44 #8
kionec, вы просто скопировали этот код? Колонку свою не подставили?

Покажите скриншот вашей бд в каком-либо визуальном sql редакторе.
0
kionec
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 12
28.10.2015, 06:33  [ТС] #9
Вот таблица
Последняя колонка таблицы не влезла.
Необходимая колонка таблицы уже выделенна
0
Миниатюры
Загрузка/просмотр изображения в БД  
kionec
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 12
28.10.2015, 06:40  [ТС] #10
Вот запрос создания этой таблицы(вместо tinyblob сделал mediumblob, но не помогло)
0
Вложения
Тип файла: txt create.txt (2.1 Кб, 2 просмотров)
kionec
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 12
28.10.2015, 11:53  [ТС] #11
Разобрался всем спасибо.
Не нужно не каких указателей. Грузился указатель.
Почему то в примерах которые гуглил было вот так:
Код
...
    QByteArray *qByteArray = new QByteArray();
    QBuffer *qBuffer = new QBuffer(qByteArray, this);
...
Нужно вот так:
Код
...
    QByteArray byte;
    QBuffer buf(&byte,this);
    if(img.byteCount()!=0)
    {
        buf.open(QIODevice::WriteOnly);
        img.save(&buf,"JPG");
        buf.close();
    }
...
//загружаю изображение в запрос
    rielt->query->bindValue(":pl",byte);
...
0
28.10.2015, 11:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.10.2015, 11:53

Синхронная загрузка изображения из интернета
Не понимаю в чем дело, загружает картинки норм, но иногда вылетает при...

QML загрузка части изображения на форму по таймеру
Эээ... Нужна идея: как на QML-форму загружать часть изображения по таймеру....

Просмотр изображений в Qt
Всем доброго дня. Есть задача - организовать просмотр изображений на Qt (поле...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru