通过套接字编程发送图像文件(jpeg、png)的提示/示例?

Posted

技术标签:

【中文标题】通过套接字编程发送图像文件(jpeg、png)的提示/示例?【英文标题】:Tips / Examples on sending an Image file (jpeg, png) over socket programming? 【发布时间】:2009-11-29 10:10:43 【问题描述】:

我听说我们可以通过套接字发送带有二进制文件的图像文件... 但我不知道如何将图像文件转换为二进制文件,甚至不知道如何考虑通过套接字发送它......

希望有人能发布一个简单的例子吗?或者指出我正确的方向 :) 我也将 QT 用于我的 gui,但不使用 QT 套接字编程。

非常感谢 :D 我真的很感激


问题@djc:

您将如何获取图像的目录路径,并以某种方式对该图像使用发送命令?我基本上使用C++。但这也是我有一段时间的疑问。

【问题讨论】:

另见:***.com/questions/1815297/… 见:***.com/questions/1808342/… 【参考方案1】:

您拥有的任何图像文件都已经是二进制文件。您可以通过套接字发送它们。

【讨论】:

【参考方案2】:

您需要知道或让用户告诉您找到图像文件的路径。

一旦你有了它,你就可以在逻辑上打开文件,将它读入缓冲区,然后将该缓冲区写入套接字,最后关闭文件(始终关闭你打开的文件并释放你分配的文件)。但是,有一些细节需要排序——比如接收端如何知道后面的数据是图像以及它有多大(所以它知道你什么时候发送的)。您的协议可能会定义一个位模式(一个或两个字节)将消息标识为图像,然后可能使用四个字节来指定图像的大小,然后是正确的字节数。您可以使用基于 POSIX 的 stat() 系统调用来查找文件的大小。或者,您可以发送一系列包含图像部分的数据包(再次使用类型 - 这次是“图像数据包”而不是“图像”类型)加上数据包的长度(可能只有 16 位无符号整数,最大大小为 65535 字节),加上最后一段的“结束图像包”。这对发件人来说可能更容易;如果数据直接进入文件,接收器很容易,但如果接收器需要内存中的图像,则很麻烦。

【讨论】:

以上是关于通过套接字编程发送图像文件(jpeg、png)的提示/示例?的主要内容,如果未能解决你的问题,请参考以下文章

通过 SOCKET 发送文件

套接字编程/通过无线发送二进制图像数据

通过套接字(python)发送包含文件的字典

以编程方式为 Silverlight 显示选择图像转换格式为 JPEG 或 PNG

如何拍摄由 Python-tkinter 创建的正在运行的 GUI 窗口的快照并保存为图像文件(.jpeg/.png)?

JPEG/PNG/GIF图片格式简析