2012-04-15 8 views
0

私のサーバーは、エンコードされたBase64文字列をAndroidデバイスに送信します。その後、このメソッドのBase64文字列をデコードしてドロアブルを作成します。 Itemizedoverlayにイメージを追加するとイメージが表示されません。アンドロイドでBase64でエンコードされたJPEG画像をデコードし、ImageViewで表示するにはどうすればよいですか?

public Drawable seticon(String input){ 

    byte[] b = Base64.decode(input, Base64.DEFAULT); 
    Bitmap decodedByte = BitmapFactory.decodeByteArray(b, 0, b.length); 
    Drawable drawable = new BitmapDrawable(decodedByte); 
    drawable.setBounds(0, 0, 50, 50); 
    return drawable; 
} 

public void setphotopoint(String input){ 
    Drawable drawable = seticon(input); 
    PhotoOverlay aPhotoOverlay = new PhotoOverlay(drawable, this); 
    OverlayItem overlayitem = new OverlayItem(); 
    overlayitem.setMarker(drawable); 
    aPhotoOverlay.addOverlay(overlayitem); 
    overlays.add(aPhotoOverlay); 
} 

これは私の写真オーバーレイクラスです

public class PhotoOverlay extends ItemizedOverlay<OverlayItem>{ 

    private ArrayList<OverlayItem> items = new ArrayList<OverlayItem>(); 

    Context mContext ; 

    public PhotoOverlay(Drawable defaultMarker, Context context) { 
     super(boundCenterBottom(defaultMarker)); 
     this.mContext = context; 
    } 
    public PhotoOverlay(Drawable defaultMarker) { 
     super(boundCenterBottom(defaultMarker)); 
     // TODO Auto-generated constructor stub 
    } 

    protected boolean onTap(int index) { 
     return true; 
    } 

    public void addOverlay(OverlayItem overlay) { 
     items.add(overlay); 
     //setLastFocusedIndex(-1); 
     populate(); 
    } 
    @Override 
    protected OverlayItem createItem(int i) { 
     // TODO Auto-generated method stub 
     return items.get(i); 
    } 
    public void clear() { 
     items.clear(); 
     populate(); 
    } 

    public void removeOverlay(OverlayItem overlay) { 
     items.remove(overlay); 
     populate(); 
    } 

    @Override 
    public int size() { 
     // TODO Auto-generated method stub 
     return items.size(); 
    } 
} 

答えて

2

それを取得するには、次のコードを使用し、その後にBase64にあなたのバイナリファイルを変換します

Base64でバイナリファイルを変換
public static void base64ToFile(String path, String strBase64) 
      throws IOException { 
     byte[] bytes = Base64.decode(strBase64); 
     byteArrayTofile(path, bytes); 
    } 

public static void byteArrayTofile(String path, byte[] bytes) 
     throws IOException { 
    File imagefile = new File(path); 
    File dir = new File(imagefile.getParent()); 
    if (!dir.exists()) { 
     dir.mkdirs(); 
    } 
    FileOutputStream fos = new FileOutputStream(imagefile); 
    fos.write(bytes); 
    fos.close(); 
} 

public static String fileToBase64(String path) throws IOException { 
    byte[] bytes = fileToByteArray(path); 
    return Base64.encodeBytes(bytes); 
} 

public static byte[] fileToByteArray(String path) throws IOException { 
    File imagefile = new File(path); 
    byte[] data = new byte[(int) imagefile.length()]; 
    FileInputStream fis = new FileInputStream(imagefile); 
    fis.read(data); 
    fis.close(); 
    return data; 
} 
+0

バイナリをBase64に変換すると、jpegをビットマップに変換せずにバイナリ>> Base64に変換できますか?もしそうなら、これは華麗です! –

関連する問題