2014-09-20 189 views
0

我目前正在將圖像作爲Base64傳遞給休息服務。但我無法讀取文件。這裏是我的代碼:在GDK中將圖像轉換爲base64

if (requestCode == iPictureCode && resultCode == RESULT_OK) { String picturePath = data.getStringExtra(Intents.EXTRA_PICTURE_FILE_PATH); String image = processPictureWhenReady(picturePath); }


`私人字符串processPictureWhenReady(最後絃樂picturePath){ 最終文件PictureFile的=新的文件(picturePath);

if (pictureFile.exists()) { 
     // The picture is ready; process it. 
     Bitmap bitmap = BitmapFactory.decodeFile(pictureFile.getAbsolutePath()); 
     bitmap = CameraUtils.resizeImageToHalf(bitmap); 
     ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 85, stream); 
     String base64Image = Base64.encodeToString(stream.toByteArray(), Base64.DEFAULT); 
     return base64Image; 
    } 

}`

它永遠不會進入,如果塊 'pictureFile.exists()'

可能是什麼問題呢?

回答

2

看起來你從example in the developer docs適應你的代碼,但你刪除的else where子句中一個FileObserver用於檢測當圖像實際可用。您還需要該部分,因爲當活動返回時,全尺寸圖像可能不會立即準備好。

+0

感謝@Tony對你的迴應...我在我的問題中刪除了那段代碼......但是現在當我用'EXTRA_THUMBNAIL_FILE_PATH'替換'EXTRA_PICTURE_FILE_PATH'時,它對我有用 – 2014-09-22 03:58:59

+1

當縮略圖圖像立即準備就緒時活動結果被返回,所以如果你只需要一個低分辨率的圖像,你可以使用它。但是,如果需要,您仍然需要使用FileObserver來檢測全尺寸圖像。縮略圖立即可用的原因是,您可以在用戶界面中顯示某些內容,以確認照片是在準備完整圖像時拍攝的。 – 2014-09-22 15:27:54

+0

感謝@TonyAllevato的幫助:) – 2014-09-23 09:39:10