我有代码将pl文件从url加载到ByteArrayOutputStream中。现在我想把它变成一个位图,这样我就可以绘制它了。我试过了 位图bBack = BitmapFactory.decodeStream(输出); 但是BitMapFactory不会接受yteArrayOutputStream。
如何从ByteArrayOutputStream对象创建位图? 代码
try {
URL url = new URL("http://stage.master.embryooptions.healthbanks.com/siteassets/24/ShadyGrove-logo.png");
InputStream is = (InputStream) url.getContent();
byte[] buffer = new byte[8192];
int bytesRead;
ByteArrayOutputStream output = new ByteArrayOutputStream();
while ((bytesRead = is.read(buffer)) != -1) {
output.write(buffer, 0, bytesRead);
}
/////////////////////////////////////////////////////////////////////////////
// HOW DO I GET A BITMAP?????????
///////////////////////////////////////////////////////////////////////////////
// Bitmap bBack=BitmapFactory.decodeStream(output);
return "";
} catch (MalformedURLException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
答案 0 :(得分:2)
下面应该适合你:
byte[] bitmapData = output.toByteArray();
Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapData , 0, bitmapData.length);
注意:小心加载位图。解码到位图时始终使用BitmapFactory.Options
以防止与内存相关的错误。
答案 1 :(得分:1)
如果你的目标是从你的URL下载的图像创建一个Bitmap对象,那么ByteArrayOutputStream是不必要的。所有你需要的是:
InputStream is = (InputStream) url.getContent();
Bitmap image = BitmapFactory.decodeStream(is);
您可以查看BitmapFactory的开发者页面以获取更多信息。