2014-11-04 24 views
0

我想要得到的是一個範圍的圖像的URL獲得圖像的URL:不能jsoup

java.net.MalformedURLException: Unknown protocol: data 
at java.net.URL.<init>(URL.java:184) 
at java.net.URL.<init>(URL.java:127) 

所以我試圖打印的URL,我得到這個:

data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7 

,我可以找出爲什麼,因爲我100%肯定該元素我SEL ECT是corrent,也是我做同樣的工藝與該網站的其他部分,它的工作原理..

更新1: 我曾嘗試此方法將'base64'圖像解碼:

byte[] decodedString = Base64.decode(imageMainUrl, Base64.DEFAULT); 
Bitmap bitmap = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 

但結果是一樣的..

+1

我對HTML的專家,但似乎圖像的內容實際上是嵌入在src標籤,而不是指向的URL。如果你將它存儲在一個字節數組中,並將它傳遞給BitmapFactory.decodeByteArray,你可能可以在android上解碼它,http://developer.android.com/reference/android/graphics/BitmapFactory.html – 2014-11-04 22:25:23

回答

0

這是數據URI方案

http://en.wikipedia.org/wiki/Data_URI_scheme

它允許在你的URI中添加內聯數據。

編輯

此代碼作品,它給出了1px * 1px的gif圖像。我用org.apache.commons.codec.binary.Base64commons-codec

String uri = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"; 
byte[] decodedString = Base64.decodeBase64(uri.substring(uri.indexOf("data:image/gif;base64,") + "data:image/gif;base64,".length())); 
ByteArrayInputStream is = new ByteArrayInputStream(decodedString); 
FileOutputStream os = new FileOutputStream(new File("/tmp/test.gif")); 

byte[] buffer = new byte[1024]; 
int length; 

// copy the file content in bytes 
while ((length = is.read(buffer)) > 0) 
{ 
    os.write(buffer, 0, length); 
} 

is.close(); 
os.close(); 
+0

你必須從imageMainUrl前綴'data:image/gif; base64,' – ToYonos 2014-11-04 23:30:47

+0

完成但結果相同 – DamianFox 2014-11-04 23:37:16

+0

同樣的結果是什麼意思? – ToYonos 2014-11-04 23:38:24