如何在android中捕获和保存高清图像

如何在android中捕获和保存高清图像,android,android-camera,android-camera-intent,Android,Android Camera,Android Camera Intent,这是我的代码,它使用现有的摄像头应用程序来捕获图像。。但它在一些安卓设备上不起作用。。它不会在gallery中保存捕获图像。。如何解决此问题???同时使用此权限: public class CameraActivity extends Activity { ImageView imgFavorite; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanc

这是我的代码,它使用现有的摄像头应用程序来捕获图像。。但它在一些安卓设备上不起作用。。它不会在gallery中保存捕获图像。。如何解决此问题???

同时使用此权限:

public class CameraActivity extends Activity {

ImageView imgFavorite;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_camera);
    imgFavorite = (ImageView)findViewById(R.id.imageView1);
    // set listener on image view
    imgFavorite.setOnClickListener(new OnClickListener() {
       @Override
       public void onClick(View v) {
           // open cam
          open();
       }
    });
 }
 public void open(){

    Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    //we will use this function startActivityForResult() to launch this activity and wait for its result.
    startActivityForResult(intent, 0);
 }

 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    Bitmap bp = (Bitmap) data.getExtras().get("data");
     imgFavorite.setImageBitmap(bp);
 }

是的,你可以压缩文件。这取决于你使用的百分比。你应该根据你想要的结果使用最好的数字。就像我在下面的代码中使用100一样

   ImageView drawingVIew = (ImageView) findViewById(R.id.drawing);//let this be your image view
          //your other code
      drawingVIew.setDrawingCacheEnabled(true);
                String imgSaved = MediaStore.Images.Media.insertImage(
                        getContentResolver(), drawingVIew.getDrawingCache(),
                        UUID.randomUUID().toString() + ".png", "drawing");
                if (imgSaved != null) {
                    Toast savedToast = Toast.makeText(getApplicationContext(),
                            "Drawing saved to Gallery!", Toast.LENGTH_SHORT);
                    savedToast.show();
                } else {
                    Toast unsavedToast = Toast.makeText(getApplicationContext(),
                            "Oops! Image could not be saved.", Toast.LENGTH_SHORT);
                    unsavedToast.show();
                }
                drawingVIew.destroyDrawingCache();

实际上只有高清图像没有显示在gallery中。有没有办法压缩高清图像??
   ImageView drawingVIew = (ImageView) findViewById(R.id.drawing);//let this be your image view
          //your other code
      drawingVIew.setDrawingCacheEnabled(true);
                String imgSaved = MediaStore.Images.Media.insertImage(
                        getContentResolver(), drawingVIew.getDrawingCache(),
                        UUID.randomUUID().toString() + ".png", "drawing");
                if (imgSaved != null) {
                    Toast savedToast = Toast.makeText(getApplicationContext(),
                            "Drawing saved to Gallery!", Toast.LENGTH_SHORT);
                    savedToast.show();
                } else {
                    Toast unsavedToast = Toast.makeText(getApplicationContext(),
                            "Oops! Image could not be saved.", Toast.LENGTH_SHORT);
                    unsavedToast.show();
                }
                drawingVIew.destroyDrawingCache();
try {
        FileOutputStream fos = new FileOutputStream(yourImage);
        //here change the value from 100 to your best result of compressing
            the photo before saving . and this will also update the gallery
        newImage.compress(Bitmap.CompressFormat.JPEG, 100, fos);

        fos.close();
        //refreshing gallery
        Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
        mediaScanIntent.setData(Uri.fromFile(yourImage));
        sendBroadcast(mediaScanIntent);
    } catch (IOException e) {
        Toast.makeText(this, "Pic not saved", Toast.LENGTH_SHORT).show();
        return;
    }