图像在网络中的传输
2007-08-08 17:35
148 查看
在论坛里看到一个提问帖子,大概是问如何有效的将图像通过网络传输 然后在接收端显示。(问题原帖http://community.csdn.net/Expert/TopicView3.asp?id=5690204)
图 像在网络上传输,一般都是传输编码压缩后的图像。例如在本地将一张图像编码压缩成JPEG格式后通过网络传输出去,接收端接收到之后再将其解码,用于显 示,或者直接存储到存储介质上。当然,如果不考虑传输数据量,或者有一些特殊需求也可以直接将图像对象序列化后传输。本文只讨论前者,关于图像对象序列化 可以参考我的另一篇文章《图像序列化》。
那么整理一下,这个过程也就分为3个步骤:
1、发送端图像编码。
2、以字节流的方式在网络上传输;
3、接收端解码。
图像编码
因为图像编码解码主要目的是针对图像在网络中的传输,所以编码之后的图像不必保存在硬盘上,可以直接放入一个字节数组。
public byte[] getCompressedImage(BufferedImage image)...{
byte[] imageData = null;
try ...{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(image, "jpg", baos);
imageData = baos.toByteArray();
} catch (IOException ex) ...{
imageData = null;
}
return imageData;
}
图像解码
接收端接收到表示图像数据的字节数组后,对其进行解码,得到图像对象。因为我们在发送端将其编码成JPEG格式,所以可以直接在接收端使用ImageIO对其进行解码。
public BufferedImage getDecompressedImage(byte[] imageData)...{
try ...{
ByteArrayInputStream bais = new ByteArrayInputStream(imageData);
return ImageIO.read(bais);
} catch (IOException ex) ...{
return null;
}
}
网络传输
因为图像编码之后是一个存在于内存中的字节数组,所以可以使用IO流的方式将其发送到网络的接收端,接收端建立链接将其接收。最常用的例如建立 Socket 连接等等。这部分代码讲IO的书里都有,我就不在这里写了。
相关文章推荐
- DICOM医学图像处理:fo-dicom网络传输之 C-Echo and C-Store
- DICOM医学图像处理:fo-dicom网络传输之 C-Echo and C-Store
- 基于arm的网络图像传输技术
- DICOM医学图像处理:DICOM网络传输
- 图像在网络中的传输
- DICOM医学图像处理:fo-dicom网络传输之 C-Echo and C-Store
- DICOM医学图像处理:fo-dicom网络传输之C-FIND and C-MOVE
- DICOM医学图像处理:DICOM网络传输
- 基于arm的网络图像传输
- 基于ARM的网络图像传输
- 介绍基于ARM的网络图像传输技术
- DICOM医学图像处理:fo-dicom网络传输之C-FIND and C-MOVE
- [置顶] 基于iOS的网络音视频实时传输系统(六)- AudioQueue播放音频,OpenGL渲染显示图像
- 转]图像处理网络资源
- Qt实现网络数据传输(POST)
- 黑马程序员——8.网络编程(网络模型、网络地址、传输协议(UDP、TCP/IP)、客户端和服务器端、URL)
- java学习笔记:【从网络获取图像资源】实现
- C#网络编程数据传输中封装数据帧头的方法
- 网络通信值传输方式的分类
- 神经网络 图像处理 KNN算法匹配 1