2010-08-09 110 views
1

我想這個問題已被問過,但我似乎無法找到一個正確的答案/解決方案。Android:MediaStore.Images.Media.EXTERNAL_CONTENT_URI ...在全尺寸顯示圖片?

有一個筆記應用,它允許拍照。爲此我開始了一個意圖,啓動內置的相機應用程序。到現在爲止還挺好。

但是當我告訴我的應用程序,圖像,它是在一個更小的格式:(

有趣的/奇怪的是,該攝像頭的應用程序確實需要全分辨率圖片!但由於某些原因我不能獲得完整版我的應用程序,以顯示???

所以,當我使用標準的Android圖庫應用,並轉到圖片,這是非常明顯的,它的全尺寸(我可以放大並查看細節我還真看不出來,當我放大,在我自己的應用程序)。此外,尺寸爲真正的原始圖片的,與500萬像素的相機拍攝的。

在我應用程序,他們非常小。我的手機有Android 2.2,但在我的模擬器(Android 2.1)上也是如此。

我應該如何取回我的應用程序的圖片???試了幾種方法,但沒有工作:(不需要一個完整的示例(allthough這是非常受歡迎的),只有幾個線索足以尋找自己。

的Tx提前!!

Greetingz , Koen <

+0

嘗試使用yourImageView.setImageDrawable(yourNewPicture);如果這不是你已經在做什麼來顯示預覽 – Sephy 2010-08-09 19:30:19

回答

0

非常奇怪,我通過查看插入到自己的數據庫中的_ID值來找到解決方案/答案。首先我注意到,當我選擇一個現有圖像時(通過內置的Android圖庫),我沒有得到完整大小的圖片。

當我第一次拍了一張照片,我縮放的圖像。所以區別在哪裏。在照片的_ID存儲在我的數據庫中的位置進行可視化。在我的情況下,也可能是大多數情況下,這發生在onActivityResult過程中。

首先來看看什麼我最初有:

if(requestCode == REQUEST_CAMERA && resultCode == RESULT_OK){ 
     String timestamp = Long.toString(System.currentTimeMillis()); 

     // get the picture 
     mPicture = (Bitmap)result.getExtras().get("data"); 

     //save image to gallery 
     String pictureUrl = MediaStore.Images.Media.insertImage(getContentResolver(), mPicture, getResources().getString(R.string.app_name_short), timestamp); 
     insertPictureAttachment(mRowId.intValue(), Integer.parseInt(Uri.parse(pictureUrl).getLastPathSegment())); 

的「insertPictureAttachment」 - 方法執行實際插入到數據庫中。

回想起來,這有點奇怪......製作一張照片,所以我可以製作一個URI,然後得到最後一個路徑段(這是_ID),所以我可以將它插入到我的數據庫。

最終,事實證明,我可以只用一行替換上面代碼:

insertPictureAttachment(mRowId.intValue(), Integer.parseInt(result.getData().getLastPathSegment())); 

要短得多,實際上更有意義......而不是正從result.getExtras的信息() .get(「data」),我從result.getData()得到我的信息,它給出了原始的全尺寸圖像的_ID。

我會對此做一些進一步的研究,因爲我不清楚爲什麼我實際上不必調用MediaStore.Images.Media.insertImage(...)...也許我將不得不如果我想要特定功能(如自定義文件位置或類似的東西)。

Greetingz, 柯恩<