2016-10-19 3 views
0

Beispiel Ich habe url: Daten: image/jpeg; base64, ajshgvdkau ....Wie base64 Daten konvertieren: URL zu Link URL?

ich möchte es konvertieren: http://example.com/pic.png

gibt es einen Code diese Android in Java zu tun?

==================================

Edit 1

I‘ Ich versuche, das Bild von der URL abzulegen und es in Textview anzuzeigen. Wenn ich Fall 2 verwende, wird die Bildanzeige perfekt,

, aber in Fall 1 nicht. gibt es Fehler "unbekanntes Protokoll: Daten" und "W/AwContents: nativeOnDraw fehlgeschlagen; Lichtung Hintergrundfarbe"

 //case 1 
//   String base_url = "<p>Image 1 : <img src=\"data:image/jpeg;base64,/9j/4AAQSk... 

     //case 2 
     String base_url = "<p>Image 1 : <img src=\"http://example.com/android/tryout/logo.png\"></img></p>"; 

     Spanned span2 = Html.fromHtml(base_url,getImageHTML(),null); 

     TextView tv = (TextView)findViewById(R.id.target); 
     tv.setText(span2); 

und dies ist meine Funktion

public Html.ImageGetter getImageHTML() { 

    Html.ImageGetter imageGetter = new Html.ImageGetter() { 
     public Drawable getDrawable(String source) { 
      try { 
       Drawable drawable = Drawable.createFromStream(new URL(source).openStream(), "src"); 
       drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight()); 

       return drawable; 
      } catch(IOException exception) { 
       Log.v("IOException", exception.getMessage()); 
       return null; 
      } 
     } 
    }; 

    return imageGetter; 
} 

Danke für die Antwort.

+2

ich glaube nicht, dass Sie verstehen, was die erste URL ist. Es ist tatsächlich das Bild. Das Bild wird nirgendwo gehostet, daher wird keine http-URL gefunden. – njzk2

Antwort

0

Ich habe dieses Problem gelöst. Ich benutze Base64InputStream. Löschen Sie zunächst "data: image/jpeg; base64", um einen gültigen base64-Code zu erhalten.

public Html.ImageGetter getImageHTML() { 

    Html.ImageGetter imageGetter = new Html.ImageGetter() { 
     public Drawable getDrawable(String source) { 
      try { 

       String[] str = source.split("base64"); 

       Base64InputStream is = new Base64InputStream(new ByteArrayInputStream(str[1].getBytes()), 0); 

       Bitmap decodedByte = BitmapFactory.decodeStream(is); 

       Drawable drawable = new BitmapDrawable(getResources(), decodedByte); 

       drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); 

       return drawable; 
      }catch(Exception e){ 
       e.getMessage(); 
       return null; 
      } 
     } 
    }; 

    return imageGetter; 
} 
1

kann Base64-Klasse verwendet die codierte Zeichenfolge als Byte-Array https://developer.android.com/reference/android/util/Base64.html

byte[] decodedString = Base64.decode(encodedUrl, Base64.DEFAULT);

zu dekodieren, und dann kann man aus dem Bitmap-Byte-Array erstellen.

Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 

bitte stellen Sie sicher, Meta-Informationen zu entfernen:, wenn dekodieren die URL (dh Daten image/png base64.). UPDATE: hier Probe basierend auf dem Code:

public Html.ImageGetter getImageHTML() { 

    Html.ImageGetter imageGetter = new Html.ImageGetter() { 
     public Drawable getDrawable(String source) { 
      try { 
       String base64Image = source.substring("data:image/jpeg;base64,".length); 
       byte[] decodedString = Base64.decode(base64Image, Base64.DEFAULT); 
       Bitmap bitmap = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 
       Drawable drawable = new BitmapDrawable(getActivity().getResources()/*or other way to get resource reference*/, bitmap); 
       drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight()); 

       return drawable; 
      } catch(IOException exception) { 
       Log.v("IOException", exception.getMessage()); 
       return null; 
      } 
     } 
    }; 

    return imageGetter; 
} 
+0

Borte Bro. saya coba dulu :) –

+0

Bitte benutzen Sie nicht Bahasa Indonesia, obwohl ich gebürtig aus Indonesien bin, weil die Mehrheit der Leute hier unsere Sprache nicht kennt;) –

+0

ok. Es tut mir leid, dass Sir –