综合对接流(图片到字节数组,字节数组到文件)

 跟文件复制类似,把图片文件读进去,以字节数组输出来,在把字节数组都进写出到文件,完成图片复制

package com.jianshun;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;

/**
 * 1:图片读取到字节数组
 * 2:字节数组写出到文件
 */
public class IOTest09 {

	public static void main(String[] args) {
		//图片转成字节数组
		byte[] datas = fileToByteArray("p.jpg");
		System.out.println(datas.length);
		byteArrayToFile(datas,"p-byte.jpg");
	}
	
	/**
	 *1:图片读取到字节数组
	 *1):图片到程序             FileInputStream
	 *2):程序到字节数组         ByteArrayOutputStream 
	 */
	public static byte[] fileToByteArray(String filePath){
		//1:创建源与目的地
		File src =
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!您可以通过以下步骤将`std::vector<cv::Vec6f>`数组通过socket进行传输: 1. 首先,将`std::vector<cv::Vec6f>`数组转换为字符数组字节。您可以使用`reinterpret_cast`将`std::vector<cv::Vec6f>`转换为`char`指针,并计算出需要传输的字节数。 ```cpp std::vector<cv::Vec6f> data; // 假设这是您要传输的数组 // 将vector转换为char指针 char* dataPtr = reinterpret_cast<char*>(data.data()); // 计算需要传输的字节数 size_t dataSize = data.size() * sizeof(cv::Vec6f); ``` 2. 创建一个socket连接,并确保连接到正确的目标主机和端口。 ```cpp #include <sys/socket.h> #include <arpa/inet.h> int sock = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in serverAddress; serverAddress.sin_family = AF_INET; serverAddress.sin_port = htons(PORT); // 设置目标端口 inet_pton(AF_INET, SERVER_IP, &(serverAddress.sin_addr)); // 设置目标IP connect(sock, (struct sockaddr*)&serverAddress, sizeof(serverAddress)); ``` 3. 使用`send`函数将数据发送到目标主机。 ```cpp size_t totalBytesSent = 0; while (totalBytesSent < dataSize) { ssize_t bytesSent = send(sock, dataPtr + totalBytesSent, dataSize - totalBytesSent, 0); if (bytesSent == -1) { // 发送失败处理 break; } totalBytesSent += bytesSent; } ``` 4. 在接收端,使用相同的逻辑接收数据,并将接收到的字节转换回`std::vector<cv::Vec6f>`。 ```cpp std::vector<cv::Vec6f> receivedData(dataSize / sizeof(cv::Vec6f)); size_t totalBytesReceived = 0; while (totalBytesReceived < dataSize) { ssize_t bytesReceived = recv(sock, receivedData.data() + totalBytesReceived, dataSize - totalBytesReceived, 0); if (bytesReceived <= 0) { // 接收失败处理 break; } totalBytesReceived += bytesReceived; } ``` 请注意,上述示例代码仅提供了一个基本的框架,您可能需要根据您的实际情况进行适当的修改和错误处理。此外,确保在接收端对接收到的数据进行正确的类型转换和处理。 希望对您有所帮助!如果您有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值