我正在使用EasyImage庫來拍照。
然後,我將這些文件轉換爲位圖,然後將位圖轉換爲Base64並將其上傳到服務器。
我知道,這不是一個好的方法,但這就是我目前的做法。將文件解碼爲位圖有時有效,有時不會
當拍攝照片時:
@Override
public void onImagePicked(File imageFile, EasyImage.ImageSource source) {
uploadImage(imageFile);
}
這裏面 「uploadImage」 方法的第一行:
Image image = new Image(LoginManager.getInstance(getApplicationContext()).getUsername(), file);
這是構造:
public Image(String userName, File imageFile) {
this.userName = userName;
this.imageFile = imageFile;
createBase64(getBitmap());
}
內部「getBitmap 「是問題開始的地方。這2條線具體爲:
bitmap = BitmapFactory.decodeFile(imageFile.getPath());
bitmap = Bitmap.createScaledBitmap(bitmap, 100, 100, false);
鏡像文件是從未空。
我用調試器至少檢查了100次,它從不爲空。它也總是有路徑。
getPath()
從不爲空。
但是,它仍然經常無法創建位圖。
有時它是成功的,一切都很好,但大多數時候,位圖都是空的。
我不知道爲什麼。
文件(拍攝的圖片)總是被成功創建,並且永遠不會爲空,但是由於某種原因它只是無法創建位圖。
謝謝你的回答。我已將inSampleSize設置爲4(也嘗試過8),但它仍然無法正常工作。同樣的問題。你有什麼其他想法可能會出錯嗎? – Guy
@Whiz檢查您的LogCat可能的輸出在通話之前/之後。確保uri/path存在,並且你有讀/寫權限,比這更難... –
當你提到「讀/寫訪問」時,我去檢查我的應用程序信息(在手機上),並看到我只有CAMERA權限,但沒有存儲。我授予存儲許可,回到應用程序,現在它可以100%的時間工作。爲什麼會發生這種情況?當您嘗試在未經許可的情況下執行某些操作時,該應用不應該崩潰嗎它爲什麼有時(很少)實際上仍然工作?我很困惑這一點。但無論如何,非常感謝!隨意在你的答案中添加權限的事情,我會很樂意接受它:) – Guy