引用第1楼dbzhang800于2009-11-13 18:31发表的 :
这个主要看你的协议时怎么定义的吧,和传输的东西关系不大
QImage序列化,去看QDataStream和QByteArray
恩,谢谢,正在看这几个类,但还有很多不知道的。再请问一下,我刚传了50几KB的图片发现速度很慢(从电脑传到mini2440板上),那是不是分成几部分传会快点?还有QByteArray的最大空间是多少(大小能自己定义的吗),如果把大图片存在QByteArray会不会放不下而导到数据丢失?
我是这样来实现传图片的,请大侠指点一下。
发送是这样的
void mySender::send()
{
QImage image(sendFileName);
QByteArray ba;
QBuffer buffer(&ba);
buffer.open(QIODevice::WriteOnly);
image.save(&buffer, "PNG"); //
上面几句是,将图片以PNG形式存在QByteArray中.在这问题 就是:若是大图片,QByteArray 会不会放不下而导致数据丢失。 port->write(ba); //把数组中的数据写入串口,当图片稍微大点时好像比较慢,请问一下怎样解决
}
接收是这样的
void mySender::save()
{
QString filename=QFileDialog::getSaveFileName(this,tr("save picture"),"",tr("Picture (*.png);;All Files(*)"));
if(filename.isEmpty())
return;
else {
QFile file(filename);
if(!file.open(QIODevice::WriteOnly)){
QMessageBox::information(this,tr("Unable to open file"),file.errorString());
return;
}
file.write(savefile); //这里的savefile是我接收到的数据类型是QByteArray; savefile=port->readAll();
file.close(); //
在这里我通过写入文件的形式保存收到的数据时,收到的数据能打开, //QDataStream out(&file); //用QDataStream时,接收到的数据就打不开,请问一下问题出在哪吗
//out.setVersion(QDataStream::Qt_4_5);
// QImage image(savefile);
//out<<savefile; }
}
[ 此帖被磐石在2009-11-13 20:26重新编辑 ]