2011-01-27 21 views
1

私はアンドロイドFaceDetectorを試しています。 アンドロイドエミュレータでアンドロイドカメラを使用する方法が見つからないため、ビットマップファイル(faces.bmpはグループ写真のものです)を使用する必要があります。 BitmapFactory.decodeFileはnullを返し、ビットマップをデコードできなかった場合はnullを返します。これはちょうど24ビットの.bmpファイルです。 Windows 7でEclipseを使用しています。pathNameを間違って指定しましたか?私は24ビットの.bmpファイル以外を使用する必要がありますか?BitmapFactory.decodeFileがnullを返すのはなぜですか?

public class MyFaces extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     final int width = 600; 
     final int height = 600; 
     final int maxFaces = 8; 
     FaceDetector faceDetector = new FaceDetector(width, height, maxFaces); 
     String pathName = "../res/drawable-hdpi/faces.bmp"; 
     try { 
     Bitmap bitmap = BitmapFactory.decodeFile(pathName); 
     Face faces[] = new Face[maxFaces]; 
      int nFaces = faceDetector.findFaces(bitmap, faces); 
      Log.d(this.getClass().toString(), "Faces: " + nFaces); 
    } catch (Exception e) { 
    Log.e(this.getClass().toString(), e.getMessage(), e); 
    } 
    } 
} 

答えて

3

あなたはちょうどあなたが使用できるBitmap bitmap = BitmapFactory.decodeFile(pathName);の代わりに、次にテストしている場合:

Bitmap bitmap = BitmapFactory.decodeResource(R.drawable.faces); 
+1

は申し訳ありませんが男を@jacknad、どのようにこれはあなたの質問のタイトルに答えるのでしょうか?あなたはdecodefileがnullを返す方法を尋ねませんでしたか?これをすべて一緒にスキップしていませんか? – baash05

+0

@ baash05はい、テストでのみ使用していたため、問題はスキップされます。 –

+1

正解はあなたのリソースファイルがあなたの机上でのハンドヘルドと同じパスに存在しないためです。ファイルは存在せず、nullが正しい答えです。 – baash05

関連する問題