• 5253阅读
  • 3回复

怎样通过串口传一张比较大的图片 [复制链接]

上一主题 下一主题
离线磐石
 
只看楼主 倒序阅读 楼主  发表于: 2009-11-13
如果是要传一张比较大的图片,比方说大于1M的,怎样分成一部分一部分传,用到Qt中哪些类呢,哪位大侠有经验的,传授一下,谢谢!
不怕做不到,只怕想不到
离线dbzhang800

只看该作者 1楼 发表于: 2009-11-13
这个主要看你的协议时怎么定义的吧,和传输的东西关系不大

QImage序列化,去看QDataStream和QByteArray
离线磐石
只看该作者 2楼 发表于: 2009-11-13
引用第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重新编辑 ]
不怕做不到,只怕想不到
离线磐石
只看该作者 3楼 发表于: 2009-11-17
自己顶下,大侠请帮忙
不怕做不到,只怕想不到
快速回复
限100 字节
 
上一个 下一个