我有一個.net ASMX web服務,我正在使用ksoap2庫消耗。在服務中,我首先保存用戶圖像並稍後檢索它。但是,一旦我檢索它,字節數組是完好無損的,但BitmapFactory無法解碼並返回null。保存圖像字節數組到.net webservice並檢索它
要轉換到字節數組:
Bitmap viewBitmap = Bitmap.createBitmap(imageView.getWidth(),
imageView.getHeight(), Bitmap.Config.ARGB_8888);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
viewBitmap.compress(CompressFormat.PNG, 0 /* ignored for PNG */, bos);
byte[] bitmapdata = bos.toByteArray();
web服務接受字節[]格式的ByteArray。
到陣列轉換成位圖:
byte[] blob= info.get(Main.KEY_THUMB_BYTES).getBytes();
Bitmap bmp=BitmapFactory.decodeByteArray(blob,0,blob.length); // Return null :(
imageView.setImageBitmap(bmp);
從局部分析,似乎字節數組不改變。那麼爲什麼解碼返回null?有沒有更好的保存圖像並通過web服務傳遞?我沒有分析整個字節數組,所以我猜它可能已經改變了一點。
有什麼想法?非常感謝!
UPDATE: 我剛試過的byte []轉換爲字符串使用:
Base64.encodeToString(bos.toByteArray(), Base64.DEFAULT);
和解碼使用:
byte[] blob= Base64.decode(info.get(Main.KEY_THUMB_BYTES));
現在我得到的是一個白圖片。我不確定這裏有什麼問題。請幫忙。
UPDATE: 我存儲這個圖像數據庫的內部,在類型爲varchar(最大)的柱中。我應該將這個字節數組字符串存儲在不同的sql數據類型中嗎?我對SQL不太熟悉,所以我使用了varchar,因爲它沒有將文本轉換爲unicode,我認爲這可能對字節數組很好。
謝謝!
我試過你告訴我的,而且我還是得到一張白色的圖像。我想知道這是否與web服務或數據庫有關。我將圖像存儲爲varchar(max),我應該使用不同的類型嗎? – harsimranb
發送給Webservice的base64的值是否與從其接收到的base64的值相同? – breceivemail
好吧,看來....它看起來差不多,但我沒有把它比作它,因爲它相當大......我可以在幾分鐘內確認這一點....... – harsimranb