Russian Qt Forum
Ноябрь 25, 2024, 00:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QImage->QBuffer->file == лишние байты  (Прочитано 4326 раз)
BABAH
Гость
« : Октябрь 27, 2009, 18:37 »

Незнаю уже и в чем проблема,бьюсь целый день и не могу понять,что не так.
При выводе изображения из QImage в QBuffer, а из него в файл или в stdout появляются из неоткуда лишние байты и картинка получается поврежденной...Если сохранять картинку стандартным QImage::write(), то все нормально и работает.В дебаге все нормально QBuffer::size() такой какой и должен быть. 

код:
#include <QApplication>
#include <QImage>
#include <QVector>
#include <iostream>
#include <fstream>
using namespace std;

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QGraphicsScene scene;
    scene.addEllipse(QRectF(0,0,100,100), QPen(Qt::black,2),QBrush(QColor(64,78,128,192)));

    QImage image(scene.itemsBoundingRect().size().toSize(),
          QImage::Format_ARGB32_Premultiplied);

    image.fill(0);

    QPainter painter(&image);
    painter.setRenderHint(QPainter::Antialiasing);
    scene.render(&painter);
    painter.end();


    QByteArray ba(0);
    QBuffer buffer(&ba);
    buffer.open(QIODevice::ReadWrite);
    image.save(&buffer,"png");//полный отстой...
    image.save("c:\\4.png");//Выводится без проблем и все супер

    ofstream f("c:\\s.png");
    cout<<"Content-type: image/png" << endl
    << "Content-Length:" << (int)buffer.size() << endl;
    f.write(buffer.data().data(), (int)buffer.size());
    f.close();

    return 0;
}
Записан
Rcus
Гость
« Ответ #1 : Октябрь 27, 2009, 18:51 »

Может проблема в том что при записи бинарных данных нужно открывать ofstream в binary режиме?
пробовали побайтное сравнение файлов? если моя гипотеза верна, то искажения должны быть около 0x13 0x10.
Записан
BABAH
Гость
« Ответ #2 : Октябрь 27, 2009, 18:57 »

так оно и есть))спасибо большое, сам бы я точно не догадался бы)) Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.044 секунд. Запросов: 21.