0

私は camera2 API を使用しています。バイト配列から RGB 値を取得することに興味があります。実際には、バイト配列が ByteBuffer から収集され、FileOutputStream.write(bytes) でファイルに書き込まれるときに、RGB 値の平均をこの部分から取得できます。

これが私のコードです:

ByteBuffer byteBuffer = mImage.getPlanes()[0].getBuffer();
byte[] bytes = new byte[byteBuffer.remaining()]; 
byteBuffer.get(bytes); 
FileOutputStream fileOutputStream = null; 
try {  
     fileOutputStream = new FileOutputStream(mImageFile);    
     fileOutputStream.write(bytes); 
} 
catch (FileNotFoundException e) {  
   // TODO Auto-generated catch block  e.printStackTrace(); } catch    
   (IOException e) {  
          // TODO Auto-generated catch block  e.printStackTrace(); 
   } 
finally {  
    mImage.close();  
    try {   
       fileOutputStream.close();  
    } 
    catch (IOException e) {   // TODO Auto-generated catch block  
        e.printStackTrace();  
    } 
} 
4

1 に答える 1

0

クラスのImageリファレンス ページはBitmapFactory JPEG 形式のデータBitmap.

ただし、ファイルに保存するためにデータを JPEG 形式にする必要がない場合 (つまり、アプリでカメラからの画像を処理するだけの場合)、出力Surface形式を からJPEGに変更することを検討してください。 YUV_420_888. 次に、それをRGBに変換しBitmapこの回答を参照)、JPEGのエンコードにかかる時間を大幅に節約できます。

于 2016-03-13T01:15:56.187 に答える