Search code examples
androidimagesd-card

store an image in internal storage in android


I am working now on application that start the camera and take a photo, I didn't use camera activity, but I wrote my camera app and I want to save the taken image in the internal phone storage in folder called "temPic"

The following code generate the folder and the image, but when I checked the tempPic I found an image called image1.jpg and it's size is 461115 ( I tried to store the image in SDcard directory and it is the same size), but when I double clicked it a black image appeared, not the taken one although in SDcard I opened it !!!

FileManipulator fileFormat = new FileManipulator(
                getApplicationContext());
        String path = fileFormat.createFolder_PStrg("tempPic") + "/image1.jpg";     
        File file = new File(path);
        Uri outputFileUri = Uri.fromFile(file);

        OutputStream imageFileOS;
        try {


            imageFileOS = getContentResolver().openOutputStream(outputFileUri);
            imageFileOS.write(arg0);
            imageFileOS.flush();
            imageFileOS.close();
            Toast.makeText(AndroidCamera.this, 
                    file.length()+"", 
                    Toast.LENGTH_LONG).show();
            Toast.makeText(AndroidCamera.this, 
                    "Image saved: " + outputFileUri.toString(), 
                    Toast.LENGTH_LONG).show();

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        camera.startPreview();

Solution

  • I don't know if this can help you but this is how I save a file to the SD card and it works.

            public void saveToSD(Bitmap outputImage){
    
    
                File storagePath = new File(Environment.getExternalStorageDirectory() + "/MyPhotos/"); 
                storagePath.mkdirs(); 
    
                File myImage = new File(storagePath, Long.toString(System.currentTimeMillis()) + ".jpg");
    
                try { 
                    FileOutputStream out = new FileOutputStream(myImage); 
                    outputImage.compress(Bitmap.CompressFormat.JPEG, 80, out); 
                    out.flush();    
                    out.close();
                } catch (Exception e) { 
                    e.printStackTrace(); 
                }               
            }