Название: Запись изображения (QImage) в поле BYTEA (PostgreSQL), а затем и считывание... Отправлено: daenux от Февраль 09, 2011, 09:40 Товарищи, не удаеться записать в поле bytea изображение, пытаюсь записать следующем образом:
Код: // Создание и установление связи между объектами Название: Re: Запись изображения (QImage) в поле BYTEA (PostgreSQL), а затем и считывание... Отправлено: Fat-Zer от Февраль 09, 2011, 09:59 не хватает чего-то вроде
Код
Название: Re: Запись изображения (QImage) в поле BYTEA (PostgreSQL), а затем и сm Отправлено: daenux от Февраль 09, 2011, 10:01 Да нееет, объект диначиеский - да и формат указывать не обязательно, он ведъ в байты конвертируеться...
Название: Re: Запись изображения (QImage) в поле BYTEA (PostgreSQL), а затем и сm Отправлено: BRE от Февраль 09, 2011, 10:07 да и формат указывать не обязательно, он ведъ в байты конвертируеться... А тип графического файла, в который нужно сохранить эту картинку, программа определяет телепатически... ;)Название: Re: Запись изображения (QImage) в поле BYTEA (PostgreSQL), а затем и считывание... Отправлено: daenux от Февраль 09, 2011, 10:12 Верно, простите пожалуйста...
С указанием формата графического изображения все работает! :) Название: Re: Запись изображения (QImage) в поле BYTEA (PostgreSQL), а затем и считывание... Отправлено: daenux от Февраль 09, 2011, 10:43 А вот теперь считывание, и сново я что то делаю не так:
Код: qBuffer->open(QIODevice::WriteOnly); Я правильно записываю в qBuffer? Название: Re: Запись изображения (QImage) в поле BYTEA (PostgreSQL), а затем и сm Отправлено: Пантер от Февраль 09, 2011, 11:12 1. Убери нафиг создание в куче.
2. qImage.load (qSqlQuery.value(qSqlQuery.record().indexOf("PHOTO")).toByteArray()); Название: Re: Запись изображения (QImage) в поле BYTEA (PostgreSQL), а затем и сm Отправлено: Fat-Zer от Февраль 09, 2011, 11:22 А тип графического файла, в который нужно сохранить эту картинку, программа определяет телепатически... ;) При чтении из файла - да. :D1. Убери нафиг создание в куче. 1. согласен2. qImage.load (qSqlQuery.value(qSqlQuery.record().indexOf("PHOTO")).toByteArray()); 2. опять же указать формат... или здесь он сам угадает? Название: Re: Запись изображения (QImage) в поле BYTEA (PostgreSQL), а затем и считывание... Отправлено: Пантер от Февраль 09, 2011, 11:35 bool QImage::loadFromData ( const QByteArray & data, const char * format = 0 )
Т.е. должен сам. Название: Re: Запись изображения (QImage) в поле BYTEA (PostgreSQL), а затем и считывание... Отправлено: daenux от Февраль 09, 2011, 11:36 Обнаруживаються две странности, первая:
Код: qDebug() << qSqlQuery->record().indexOf("PHOTO")).toByteArray().count(); // 12868 И вторая связанна с тем, что при записи в БД изображения, мы отправляли 9660 байт, а при считывании получаем 12868 (изображение одно и то же, как и формат)... Название: Re: Запись изображения (QImage) в поле BYTEA (PostgreSQL), а затем и сm Отправлено: daenux от Февраль 09, 2011, 11:38 Пантер - Указание формата ничего не дает, проверял - но все же формат при load я указываю на всякий...
Название: Re: Запись изображения (QImage) в поле BYTEA (PostgreSQL), а затем и считывание... Отправлено: daenux от Февраль 09, 2011, 11:47 Если использовать функцию loadFromData, тогда то же самое получаеться:
Код: qImage.laodFromData(qSqlQuery->value(qSqlQuery->record().indexOf("PHOTO")).toByteArray(), "JPEG"); Название: Re: Запись изображения (QImage) в поле BYTEA (PostgreSQL), а затем и считывание... Отправлено: daenux от Февраль 09, 2011, 12:53 У когонибуть вообще есть пример записи и считывания из bytea каких либо объектов?
Название: Re: Запись изображения (QImage) в поле BYTEA (PostgreSQL), а затем и считывание... Отправлено: daenux от Февраль 09, 2011, 13:08 Дело вот в том, что QImage, говарит что изображение состоит из 256000 байт, затем это дело переходит в QByteArray, каторый в свою очередъ говарит что он содержит 9650 байт...
Этот момент не яснет, может ли кто разьяснить? Название: Re: Запись изображения (QImage) в поле BYTEA (PostgreSQL), а затем и считывание... Отправлено: Luck от Февраль 10, 2011, 09:52 У самого сейчас возникла та же проблема, удалось решить. Вот код.
Код: QFile file("before.png"); |