我们知道,tcp网络编程发送数据是利用套接字来实现,将要传输的东西转化为数据流再进行传输,为了确保数据传输的准确性和安全性,我们在发送数据流前发送一个quint32的常量来表示所要发送的数据的大小;当我们要发送图片时,最关键的是获得图片的大小:

QBuffer buffer;

QPixmap(":/images/1.png").save(&buffer,"BMP");

知道了图片的大小就可以传输图片了;发送端:

QDataStream stream( &data, QIODevice::WriteOnly );
  stream.setVersion( QDataStream::Qt_4_0 );
  stream << (quint32)buffer.data().size();
  data.append( buffer.data() );

tcpSocket->write(data);

data.resize(0);

接收端:
int dataSize;

while(socket.byteAvaileble() > 0 )

{

if( dataSize == 0 )
  {
    QDataStream stream( &socket );
    stream.setVersion( QDataStream::Qt_4_0 );
  
    if( socket.bytesAvailable() < sizeof(quint32) )
      return;
      
    stream >> dataSize; //获取接受到的数据大小
  }
  
  if( dataSize > socket.bytesAvailable() )
    return;

QByteArray array = socket.read( dataSize );
  QBuffer buffer(&array);
  buffer.open( QIODevice::ReadOnly );
  
  QImageReader reader(&buffer, "PNG");
  QImage image = reader.read();

if( !image.isNull() )
  {
    ui.imageLabel->setPixmap( QPixmap::fromImage( image ) );
    ui.imageLabel->setText( tr("") );
   dataSize=0;
  }
  else
  {
  }

}

原文地址:http://blog.csdn.net/hsl17/article/details/6739171

转载于:https://www.cnblogs.com/suanec/p/4205189.html

[转] - 如何用QTcpSocket传送图片相关推荐

  1. 【问题收集·中级】关于XMPP使用Base传送图片

    [问题收集·中级]关于XMPP使用Base传送图片 下面是我与博友的问答过程:并在最后链接附录了相应的文件: 博友问题:  16:35:38 他跟我说要 内容图片  base64编码 上传.. 博友问 ...

  2. html修改img图片颜色,教你如何用CSS修改图片颜色

    原标题:教你如何用CSS修改图片颜色 看到题目是不是吓了一跳?css竟然还有这个操作?还真是第一次听说~ 原理嘛,其实很简单的,用到的就是 CSS3 滤镜filter中的drop-shadow,该滤镜 ...

  3. 如何将已有图片做成透明水印_如何用Photoshop在图片上添加透明水印?

    我们经常会在网上看到一些漂亮的图片上有添加各种水印,添加水印可以让图片有一个标记,也可以防止别人盗用你的成果.那么图片上的这些水印是怎么添加的呢?今天,小编就给大家介绍用Photoshop软件来制作图 ...

  4. 如何用js实现图片下载

    如何用js实现图片下载??? 需求场景:点击图标,实现图片下载. html代码: js函数: downLoadImg(imgsrc, name) {var image = new Image();// ...

  5. 如何用PS在图片上添加箭头

    如何用PS在图片上添加箭头 第一步:在工具栏里选择自定义形状工具(快捷键U) 第二步:在属性栏里的第二个小三角(也就是几何选项)上单击 第三步:把那箭头底下的起点和终点都打上勾,还可以设置长度,长度, ...

  6. 如何用js实现图片切换的同时,文字也同时切换

    如何用js实现图片切换的同时,文字也同时切换? 图片切换的实现我会 代码如下: <!doctype html> <html> <head> <meta cha ...

  7. 微信开发者工具 wxmi修改模版颜色_如何用手机给图片添加文字、诗词或者歌词?用对工具一键轻松解决...

    如何用手机给图片添加文字.诗词或者歌词?用对工具一键轻松解决 有很多朋友有给图片添加文字的需求,但觉得给图片添加歌词,诗词等,排版非常的打脑壳,想得到好的效果就更难了.今天我就给大家分享一种简单的方法 ...

  8. python查找文字在图片中的位置_在ppt中如何用文字环绕图片,ppt用文字环绕图片的方法...

    PPT在工作时,是会经常运用到的,它可以更清晰的讲解一些事情,在工作中几乎没有一件事情是ppt无法解决的,因此PPT的作用也是非常大的,但是在ppt中如何用文字环绕图片呢?今天就来介绍下ppt用文字环 ...

  9. python图片修改过、有原图、怎么得到改动的地方_微信发照片原图会泄露行踪?手把手教会你如何用 Python 通过图片获取用户信息!...

    原标题:微信发照片原图会泄露行踪?手把手教会你如何用 Python 通过图片获取用户信息! 前言 有媒体曝出,微信发原图或存在泄露位置信息的风险. 对此,腾讯微信团队微博 12 月 1 日发布声明称, ...

最新文章

  1. 短书评 | 这本Python新书风评很好
  2. springboot 自动装配_Spring Boot 自动装配流程
  3. 高通msm8994启动流程简介
  4. Jenkins配置基于角色的项目权限管理--转
  5. centos7安装mysql8.0简书_【Linux实战03】CentOS 7 下 MySQL 8.0 的安装
  6. android之tab分页标签的实现方法,Android应用中使用ViewPager和ViewPager指示器来制作Tab标签...
  7. 超燃!支付宝技术双11纪录片《一心一役》全球独家首发
  8. Centos下lnmp编译安装详细过程
  9. python--list
  10. 不是区块链的特征_《区块链的特征》阅读练习及答案
  11. 关键词推荐工具中的用户引导机制之三
  12. Android动画之补间动画详解
  13. 计算机科学导论简答题答案题库,计算机科学导论习题答案
  14. [论文笔记]Self-Attention Generative Adversarial Networks
  15. ubuntu 安装wifi驱动(Device-c822)
  16. 计算机网络---数据链路层PPP协议
  17. dell灵越笔记本后盖怎么拆_戴尔灵越5584笔记本按键拆卸、安装教程
  18. iOS保持App真后台运行
  19. android 友盟统计 简单上手
  20. 酒桌游戏,初期训练思维

热门文章

  1. python绘制随机数直方图-用matplotlib画直方图(histogram)
  2. python和excel的区别-Python与Excel 不得不说的事情
  3. python画柱状图和折线图-Python数据可视化–折线图–柱状图
  4. 想学python编程-想学Python编程?你真的适合吗?
  5. python第三方库下载-3、python第三方库的安装方式
  6. python 3读取文件-python3的txt文件读写
  7. python爬虫怎么爬同一个网站的多页数据-请问爬虫如何爬取动态页面的内容?
  8. python教学网站-自学python有什么网站
  9. python代码需要背吗-Python面试必须要看的15个问题
  10. python创建新文件-如何在python中编辑文件并创建一个新的文件?