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; }
|