【问题标题】:How to get byte Image From url in Android如何从 Android 中的 url 获取字节图像
【发布时间】:2016-01-05 21:09:38
【问题描述】:
我是 android 新手。图像以 Base64 格式存储在服务器中。那么我如何将它从 server 获取到 My Project 并使用 Json 对象设置为我的 ImageView。
请帮帮我
任何帮助将不胜感激
【问题讨论】:
标签:
java
android
json
android-studio
【解决方案1】:
试试这个:
先将Url转为byte[]:
byte[] bitmapdata = getByteArrayImage(url);
方法:
private byte[] getByteArrayImage(String url){
try {
URL imageUrl = new URL(url);
URLConnection ucon = imageUrl.openConnection();
InputStream is = ucon.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
ByteArrayBuffer baf = new ByteArrayBuffer(500);
int current = 0;
while ((current = bis.read()) != -1) {
baf.append((byte) current);
}
return baf.toByteArray();
} catch (Exception e) {
Log.d("ImageManager", "Error: " + e.toString());
}
return null;
}
现在将 byte[] 转换为位图
Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapdata , 0, bitmapdata .length);
并将您的位图设置为您的 ImageView:
img= (ImageView) findViewById(R.id.imgView);
img.setImageBitmap(bitmap );
【解决方案2】:
试试这个:
URL u = new URL(content);
openStream = u.openStream();
int contentLength = openStream.available();
byte[] binaryData = new byte[contentLength];
openStream.read(binaryData);
openStream.close();
【解决方案3】:
我找到了简单的解决方案:
byte[] img = Base64.decode(userHeader.GetImage(), Base64.DEFAULT);
Bitmap bitmap = BitmapFactory.decodeByteArray(img, 0, img.length);
imageww.setImageBitmap(getCircleBitmap(bitmap));
【解决方案4】:
使用 Apache 的 commons-io-2.5 lib 我们可以使用这个函数 IOUtils.toByteArray(is)
public static String getByteArrayFromURL(final String url) {
String base64Image = "";
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<String> result = executor.submit(new Callable<String>() {
public String call() throws Exception {
try {
URL imageUrl = new URL(url);
URLConnection ucon = imageUrl.openConnection();
InputStream is = ucon.getInputStream();
return Base64.encodeToString(IOUtils.toByteArray(is), Base64.NO_WRAP);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
});
try {
base64Image = result.get();
} catch (Exception exception) {
exception.printStackTrace();
}
return base64Image;
}