我有一个使用相机的Android应用程序。我正在使用套接字连接发送摄像头的onPreviewFrame()的byte []。
这是我的代码
public void onPreviewFrame(byte[] data, Camera camera) {
Log.v(TAG, "data=" + data.length);
try
{
Log.i(TAG,"connecting to server...");
soc=new Socket(serverAddr,8210);
outStream=new ObjectOutputStream(soc.getOutputStream());
Log.i(TAG,"connected");
outStream.write(data);
outStream.flush();
outStream.close();
}
catch(Exception ex)
{
Log.e(TAG,"error on stream : " + ex);
}
}
我只是想知道byte[] data
的格式以及如何将其转换为服务器上的图像。我正在使用以下在PC上运行的java代码:
ServerSocket serverSocket = new ServerSocket(8210);
while (true) {
Socket client = serverSocket.accept();
byte [] mybytearray = new byte [497664];
InputStream is = client.getInputStream();
FileOutputStream fos = new FileOutputStream("source-copy.jpg");
BufferedOutputStream bos = new BufferedOutputStream(fos);
bytesRead = is.read(mybytearray,0,mybytearray.length);
bos.write(mybytearray, 0 , 497664);
bos.flush();
bos.close();
}
在服务器上,它正在创建文件,但byte []需要以某种图像格式进行解码。有谁知道怎么做?
我还需要其他什么吗?
答案 0 :(得分:1)
假设此数据来自相机预览,您需要找出预览格式:Android - Camera.Parameters - getPreviewFormat()指向可能的图像格式列表 - Android - ImageFormat。您需要将格式发送到服务器端代码。
一旦服务器端具有格式,您就可以搜索网络以进行解码或转换为合适的格式。