Android相机预览byte []到Java图像

时间:2011-03-05 18:52:16

标签: java android image

我有一个使用相机的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 []需要以某种图像格式进行解码。有谁知道怎么做?

我还需要其他什么吗?

1 个答案:

答案 0 :(得分:1)

假设此数据来自相机预览,您需要找出预览格式:Android - Camera.Parameters - getPreviewFormat()指向可能的图像格式列表 - Android - ImageFormat。您需要将格式发送到服务器端代码。

一旦服务器端具有格式,您就可以搜索网络以进行解码或转换为合适的格式。