回复: 关于QDataStream的用法,达人进阿!!!
#6 [myer 05-10 08:17]
用QImage ( const char * fileName, const char * format = 0 )
或者QPixmap ( const QString & fileName, const char * format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor )
然后,stream > image/pixmap
例如:
img = new QImage('fileopen.png');
QDataStream ds(...);
ds >> img;
......
#7 [gable 05-10 12:34]
嗯,用你的方法我成功的将流写进了image对象,但是现在又遇到问题
我要做成网络传输,用以下代码发送:
QByteArray S_datagram;
QDataStream out(S_datagram,
IO_WriteOnly);
QImage image("1.jpg",
"JPEG");
out>>image;
socket->;writeBlock ( S_datagram.data() ,
S_datagram.size() );
这基本可行,但是当我用readblock来接收时发生问题。
QByteArray C_datagram;
socket->readBlock( C_datagram.data(), socket->bytesAvailable()
);
QDataStream in(C_datagram,
IO_ReadOnly);
QImage image;
in>>image;
运行时那个readBlock会报个null point error 的错误,请问版主,这是怎么回事?
我想实现图片的网络传输是用这个思路吗?
另外image接收了二进制数据流后如何把图像绘制出来?
这些问题真的很困扰我,望速回...
#8 [gable 05-10 13:32]
socket->readBlock( C_datagram.data(), socket->bytesAvailable() );
qWarning("%d", C_datagram.size());
这句能发现C_datagram并没有接收网络中发过来的数据包,为什么?
#9 [gable 05-10 19:39]
以上问题均已解决,但在用版主的方法进行的时候
代码如下:
QDataStream in(C_datagram, IO_ReadOnly);
QImage image;
in>>image;
出现这个问题:
libpng error: IDAT: CRC error
C_datagram里面是二进制数据,没有错。
这个问题出现在运行的时候,望高人解答!