2011-03-05 16 views
2

カメラを使用したアンドロイドアプリがあります。私はカメラのonPreviewFrame()のbyte []を送るためにソケット接続を使用しています。ここでAndroidカメラのプレビューバイト[]からJava画像

は私のコード

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の形式とどのようにサーバー上の画像にこれを変換する方法を知りたいと思いました。それはファイルが、[]いくつかの画像形式でデコードする必要がバイトを作成して、サーバー上で

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(); 
} 

:私は、PC上で動作する次のJavaコードを使用しています。誰もそれをする方法を知っていますか?

ここに他に必要なものはありますか?

答えて

1

このデータがカメラプレビューからのものであると仮定すると、プレビューフォーマットの種類は、Android - Camera.Parameters - getPreviewFormat()で、可能な画像フォーマットのリストを指しています(Android - ImageFormat)。サーバー側のコードに書式を送信する必要があります。

サーバー側でフォーマットが設定されたら、ウェブを検索してデコードしたり、適切な形式に変換したりすることができます。

関連する問題