Название: QImage->QBuffer->file == лишние байты Отправлено: 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; } Название: Re: QImage->QBuffer->file == лишние байты Отправлено: Rcus от Октябрь 27, 2009, 18:51 Может проблема в том что при записи бинарных данных нужно открывать ofstream в binary режиме?
пробовали побайтное сравнение файлов? если моя гипотеза верна, то искажения должны быть около 0x13 0x10. Название: Re: QImage->QBuffer->file == лишние байты Отправлено: BABAH от Октябрь 27, 2009, 18:57 так оно и есть))спасибо большое, сам бы я точно не догадался бы)) :)
|