0

次の意図で写真を撮ることができます

cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);

次に、onActivityResult撮影した画像をに設定ImageViewし、次の関数でSDカードに画像を保存しようとする方法で

private void savePic(Bitmap bmp) {
    if(!isSDOK || !isSDWritable)
        return;



        String name = "TESTA";
        File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
        File file = new File(path,name+".jpg");


        path.mkdirs();
        ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
        bmp.compress(CompressFormat.JPEG, 100 /*ignored for PNG*/, bos); 
        byte[] bitmapdata = bos.toByteArray();
        ByteArrayInputStream bis = new ByteArrayInputStream(bitmapdata);

        try{
            InputStream is = bis;
            OutputStream os = new FileOutputStream(file);
            byte[] data = new byte[is.available()];
            is.read();
            os.write(data);
            is.close();
            os.close();
        }catch(Exception e){Log.e("IMAGE CONVERT ERR", e.toString());}
        return;
}

PICTURESフォルダーを確認すると、ファイルが表示されますが、画像は空白で、サイズは常に 12kb です。上記の方法を使用してビットマップ ファイルから画像を保存することはできませんか?

4

1 に答える 1

1

はい、CommonsWare のコメントに従って、次のように EXTRA_OUTPUT を使用できます。

private void capturePhoto() {
    File root = new File(Environment.getExternalStorageDirectory(), "Folder");
    if (!root.exists()) {
        root.mkdirs();
    }
    File file = new File(root, "filename.jpeg");
    Uri outputFileUri = Uri.fromFile(file);

    Intent photoPickerIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    photoPickerIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
    photoPickerIntent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
    photoPickerIntent.putExtra("return-data", true);
    startActivityForResult(photoPickerIntent, TAKE_PICTURE);
}
于 2013-04-21T16:36:46.517 に答える