2012-09-25 141 views
0

當我從相機(從設備主屏幕)捕捉圖像並檢查SD卡上的圖像尺寸時,它顯示在300-500 Kb之間。Android:將原始尺寸的圖像保存在SD卡上

但是,當我使用相機意圖在我的應用程序中捕捉圖像,並將其保存在SD卡(在新文件夾中)時,它顯示的圖像大小介於5-10 Kb之間。

這是我使用保存圖像的SD卡上的代碼,在拍攝照片的onActivityResult後:

Bitmap bit = (Bitmap) data.getExtras().get("data"); 
ByteArrayOutputStream bao = new ByteArrayOutputStream(); 
bit.compress(Bitmap.CompressFormat.JPEG, 100, bao); 
byte[] ba = bao.toByteArray(); 
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "My - Images"); 
File f = new File(imagesFolder, "test.jpg"); 
f.createNewFile(); 
FileOutputStream fo = new FileOutputStream(f); 
fo.write(ba); 
fo.flush(); 
fo.close(); 

如何將其保存爲原始大小的圖像(300-500 KB)?

有沒有辦法在將圖像保存到SD卡上之前獲取圖像大小?

謝謝

+0

與.PNG格式 –

+0

試試呀。現在圖像尺寸增加到35 KB,但高度和寬度仍然(150 x 200)相同。此外,當我從相機拍攝它給出300-500 KB大小的圖像和大小是800×800左右 –

+0

其實際上是1600×1200 –

回答

1

您使用以下壓縮收到的位圖對象:

bit.compress(Bitmap.CompressFormat.JPEG, 100, bao); 

那是你的位圖被存儲在一個壓縮格式的原因。

此外,您可以使用bit.getHeight()bit.getWidth()來獲取位圖的尺寸。您可以使用bit.getByteCount()讓你的位圖

+0

但我使用100.這不是說我我要求100%的質量還是原來的質量?因爲我試圖刪除這一行,而我得到的全是一個0大小的圖像,因爲我沒有使用任何格式。我應該使用哪種格式來獲得原始質量? –

+0

哦,我的錯誤,我不知道100是你指定的質量%。在這種情況下,100應該最大。質量。我會嘗試查看我的代碼,因爲我也做了類似的事情。 – zeiger

+0

並找不到像bit.getByteCount(); –

0

首先的實際大小,試圖找出圖片的使用代碼大小低於

Camera mCamera = null; 
Camera.Parameters camParams = mCamera.getParameters(); 
Size camSize = camParams.getPictureSize(); 

如果你的圖片大小爲5-10個KB,然後您的代碼沒有任何問題,您可能需要重新訪問您的攝像頭參數以瞭解您設置的質量。

1

檢查在這裏接受了答案,希望它可以爲你工作

Android Camera Intent: how to get full sized photo?

+0

是的,我已經閱讀過這個。這裏的解決方案是「你只有在將其保存在臨時文件中時才能獲得全尺寸的圖像」。在我的應用程序中,我將它們存儲在SD卡上,然後檢查大小 –