2011-04-23 119 views
1

我現在正在啓動相機並拍攝照片的應用程序,我沒有使用相機活動,但我寫了相機應用程序,我想將拍攝的圖像保存在內部電話存儲文件夾名爲「temPic」在android內部存儲器中存儲圖像

下面的代碼生成文件夾和圖像,但是當我檢查tempPic時,我發現了一個名爲image1.jpg的圖像,它的大小是461115(我試圖將圖像存儲在SDcard目錄和它是相同的大小),但當我雙擊它出現一個黑色的圖像,而不是採取的一個雖然在SD卡我打開它!

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(); 
+0

FILEFORMAT。 createFol der_PStrg是一種在內部存儲器中創建文件夾的方法 – alex 2011-04-23 20:06:04

回答

8

我不知道這是否可以幫助你,但這是我如何將文件保存到SD卡,它的工作原理。

 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(); 
      }    
     } 
+0

它可以在內部存儲上運行嗎? – Behzad 2013-06-05 05:20:14

+1

這種情況下的內部意味着內置於設備中的SD卡,但它不是以不同方式訪問的應用程序專用存儲。 – Lumis 2013-06-05 15:16:19

0

你爲什麼不使用攝像頭的活動,並通過創建一個具有寫入權限,允許其他應用程序寫入到這個文件夾,並把圖像的路徑,然後之後的臨時文件夾保存圖像的內部存儲相機活動回報您可以將圖像移動到另一個內部存儲文件夾,但與私有權限如下



//the temp folder to start the camera activity with 
String path = getDir("images", Context.MODE_WORLD_WRITEABLE).getPath() + "/test.jpg"; 

//start the camera activity 
File file = new File(path); 
Uri outputFileUri = Uri.fromFile(file); 

Intent intent = new Intent(
android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
startActivityForResult(intent, CAMERA_ACTIVITY); 

,並在onActivityResult方法將它與私人權限文件夾它會正常工作,因爲我測試它

+0

這不工作我真正的設備上 – 2015-02-24 09:08:07

相關問題