0

我正在开发一个使用 wifi 将桌面的屏幕图像传输到 android 设备的应用程序。我能够将图像作为字节数组从 PC 传输到 Android 设备。但无法在 android 设备的 ImageView 组件中查看图像。以下是来自服务器(PC)和客户端(Android 设备)的两段代码:

服务器

DataOutputStream ds=new DataOutputStream(soc.getOutputStream());
Rectangle rect= new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
Robot rb=new Robot();
img=rb.createScreenCapture(rect);
ByteArrayOutputStream baos=new ByteArrayOutputStream();
ImageIO.write(img, "PNG",baos);
byte[] image=baos.toByteArray();
baos.flush();
baos.close();
System.out.println(image.length);
ds.writeInt(image.length);
ds.write(image);
ds.flush();
ds.close();

客户

DataInputStream bis=new DataInputStream(csoc.getInputStream());
int imgsize=bis.readInt();
byte[] img=new byte[imgsize];
int m;
while((m=bis.read())!=-1){
bis.read(img,0,img.length);
}
bis.close();
BitmapFactory.Options op=new BitmapFactory.Options();
op.inSampleSize=8;
Bitmap bmpim=BitmapFactory.decodeByteArray(img,0,img.length);
imv.setImageBitmap(BitmapFactory.decodeByteArray(img,0,img.length,op));//imv is ImageView object
4

1 回答 1

0

考虑到您的输入流是有效的,您也可以这样尝试

DataInputStream bis=new DataInputStream(csoc.getInputStream());
    imageView=new ImageView(this);
    imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
    imageView.setAdjustViewBounds(true);
    imageView.setImageBitmap(BitmapFactory.decodeStream(bis));
// Add this imageView to existing parent layout
// parentLayout.addView(imageView);
于 2013-01-16T06:25:51.707 回答