0
gespeichert

Ich habe diesen Code, Foto und speichern auf externen Speicher, was ich möchte, ist auf internen Speicher speichern, bitte helfen Sie mir ... Was ich ändern sollte, um zu internen speichern Lagerung ...Wie kann ich das Bild von der Kamera in den internen Speicher

danke

public class MainActivity extends AppCompatActivity { 

    public static final int CAPTURE_IMAGE_FULLSIZE_ACTIVITY_REQUEST_CODE = 1777; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button button = (Button) findViewById(R.id.button); 

     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 

       File file = new File(Environment.getExternalStorageDirectory()+File.separator + "image.jpg"); 

       intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); 
       startActivityForResult(intent, CAPTURE_IMAGE_FULLSIZE_ACTIVITY_REQUEST_CODE); 

      } 
     }); 
    } 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    //Check that request code matches ours: 

     if (requestCode == CAPTURE_IMAGE_FULLSIZE_ACTIVITY_REQUEST_CODE) { 
     //Get our saved file into a bitmap object: 

      File file = new File(Environment.getExternalStorageDirectory() + File.separator + "image.jpg"); 
      Bitmap bitmap = decodeSampledBitmapFromFile(file.getAbsolutePath(), 1000, 700); 
     } 
    } 

    public static Bitmap decodeSampledBitmapFromFile(String path, int reqWidth, int reqHeight) { 

     //First decode with inJustDecodeBounds=true to check dimensions 

     final BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inJustDecodeBounds = true; 
     BitmapFactory.decodeFile(path, options); 

     // Calculate inSampleSize, Raw height and width of image 

     final int height = options.outHeight; 
     final int width = options.outWidth; 
     options.inPreferredConfig = Bitmap.Config.RGB_565; 
     int inSampleSize = 1; 

     if (height > reqHeight) { 
      inSampleSize = Math.round((float) height/(float) reqHeight); 
     } 
     int expectedWidth = width/inSampleSize; 

     if (expectedWidth > reqWidth) { 
      //if(Math.round((float)width/(float)reqWidth) > inSampleSize) // If bigger SampSize.. 

      inSampleSize = Math.round((float) width/(float) reqWidth); 
     } 

     options.inSampleSize = inSampleSize; 

     // Decode bitmap with inSampleSize set 

     options.inJustDecodeBounds = false; 

     return BitmapFactory.decodeFile(path, options); 
    } 

} 
+0

https://developer.android.com/training/basics/data-storage/files.html –

+0

Willkommen bei Stack Overflow! Möglicherweise möchten Sie die Formatierung Ihres Codebeispiels korrigieren. Es ist nicht richtig herausgekommen. –

Antwort

0

Sie diesen Code versuchen können Ihr Bild in den internen Speicher zu speichern:

FileOutputStream fos; 
try { 
    fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
    // You can also use .JPG 
    yourBitmap.compress(Bitmap.CompressFormat.PNG, 100, fos); 
} 
catch (FileNotFoundException e) { 
    Log.e(TAG, e.getMessage()); 
} 
catch (IOException e) { 
    Log.e(TAG, e.getMessage()); 
} finally { 
    fos.close(); 
} 

Sie können auch einen Blick auf diese: https://developer.android.com/guide/topics/data/data-storage.html#filesInternal

EDIT

Für Ihre Bild in voller Größe Datei in den internen Speicher zu speichern, müssen Sie Ihre

File file = new File(Environment.getExternalStorageDirectory()+File.separator + "image.jpg"); 

zu

File file = new File(context.getFilesDir(), "image.jpg"); 

getFilesDir() gibt interne Verzeichnis ändern müssen deiner App Weitere Informationen finden Sie hier: https://developer.android.com/training/basics/data-storage/files.html#WriteInternalStorage

+0

Danke, aber das nur eine Bitmap speichern, Wie kann ich das Bild in voller Größe speichern? – edwn

+0

Um auf den internen Speicher zuzugreifen, können Sie getFilesDir() anstelle von Environment.getExternalStorageDirectory() verwenden. Siehe meine Bearbeitung. – Preader

Verwandte Themen