2016-08-12 141 views
0

我測試了是否可以發送一個或兩個圖像的JSON文件。目前,我已經轉換成字節的圖像和我用通過使用base64編碼的JSON發送圖像

Base64.encodeToString(temp_arr, Base64.NO_WRAP); 

(這是機器人會的base64類的,我必須使用.NO_WRAP功能,使其工作閱讀其他堆棧溢出頁後)

到將其轉換爲字符串。此時,我將該字符串對象傳遞給我的JSON文件(使用GSON庫)並添加字符串。這些數據將被髮送到PHP頁面。

我有測試轉換字節爲base64,並保存到一個文本文件,複製該文本文件到我的PHP頁面,使用

base64_decode($); 

,這是能夠正確地重新創建通過我的PHP頁面運行它圖像就好(沙漏匹配)。所以現在我需要測試它通過網絡發送並使用json。唯一的區別是base64字符串被放入其他json文件而不是文本文件,json被髮送到php,我抓取數據並用PHP解碼。

現在問題是圖像已損壞,在十六進制編輯器中查看這兩個文件,十六進制編輯器中的前20行左右匹配正常,但之後它不匹配。奇怪的是,文件的最後有相同的數據,除了上傳的副本具有額外的字符使其更大。

所以我的問題是試圖找出,它可以是GSON(JSON)導致問題或別的東西,如果是的話,我該怎麼辦。

不幸的是,我的工作方式是,我的老闆需要將數據(帶有文本,數據等的json)同時發送到與圖像相同的php頁面,這就是爲什麼我通過圖像發送圖像JSON。

回答

0

試試這個工作對我來說,轉換成圖像的base64

public static String getStringImage(Bitmap bmp) 
    { 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     bmp.compress(Bitmap.CompressFormat.JPEG, 60, baos); 
     byte[] imageBytes = baos.toByteArray(); 
     String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT); 
     Log.e("SignUp", "Image Decode : " + encodedImage); 
     String asa = encodedImage; 
     return encodedImage; 
    } 

//傳位圖圖像,並返回的base64的字符串

+0

不幸的是,我不能這樣做。圖像以Uri形式出現。整個過程是讓Uri用相機拍攝照片,然後將Uri鏈接到使用輸入和輸出流寫入的文件對象。但不包括來自輸入流的所有字節。哪些工作,但不會爲.json工作。另一件事是我們不能使用位圖r.bitmapcompress。由於壓縮失去了圖像exif元數據:( –

0

我相信我發現我的解決方案,問題是Base64.encodeToString()會將圖像字節編碼爲包含「+」的字符,在PHP端,數據將被髮送,除了所有的「+」變成空格。我不得不用+替換所有的空格,並且它工作。

相關問題