我正在使用此代码从Facebook服务器获取我的图像。
String imageURL = "http://graph.facebook.com/"+id+"/picture?type=large";
InputStream inputStream = new URL(imageURL).openConnection().getInputStream();
DataInputStream dataStream = new DataInputStream(inputStream);
byte[] dataBuffer = new byte[4096];
ByteArrayOutputStream dataHolder = new ByteArrayOutputStream();
int n;
while ( (n=dataStream.read(dataBuffer))!=-1 ){
dataHolder.write(dataBuffer, 0, n);
}
并使用相同的方式从我的服务器获取我的图像:
FileInputStream inputStream = new FileInputSTream("/image.jpg");
DataOutputStream dataStream = new DataOutputStream(socket.getOutpustStream());
byte[] dataBuffer = new byte[4096];
int n;
while ( (n=inpuStream.read(dataBuffer))!=-1 ){
dataStream.write(dataBuffer, 0, n);
}//get -1 perfectly
并在Android应用程序上获取它们:
DataInputStream dataStream = new DataInputStream(socket.getInputStream());
byte[] dataBuffer = new byte[4096];
ByteArrayOutputStream dataHolder = new ByteArrayOutputStream();
int n;
while ( (n=dataStream.read(dataBuffer))!=-1 ){
dataHolder.write(dataBuffer, 0, n);
}//-1 ??????????????
但是Android应用程序无法获得正确的文件,它不能在循环时出去,完全不能得到-1但是昨天我意外地从我做的一些变化得到-1,真的不明白为什么我不能得到 - 1在我的Android应用程序中然而我可以从服务器获取它循环
答案 0 :(得分:1)
您可以直接将输入流转换为位图而不是读取字节。
Bitmap myBitmap = BitmapFactory.decodeStream(inputStream);
答案 1 :(得分:0)
以下是一些猜测:你是否关闭了服务器端的流?
在写完循环后放一个dataStream.close();
。