2013-01-16 113 views
0

我正在開發一個應用程序,它使用WiFi將桌面的屏幕圖像傳輸到Android設備。我可以將圖像作爲字節數組從PC傳輸到Android設備。但無法查看圖像在Android的device.Following ImageView的成分是兩段代碼從服務器(PC)和客戶端(Android設備):在ImageView中加載圖像時出現

服務器

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 
+0

'調試和Trace' – RobinHood

回答

0

您也可以嘗試這樣的,考慮你的InputStream爲有效

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); 
+0

Thanks.By改變,因爲上面的代碼,我將需要手動佈局添加ImageView的?糾正我,如果我錯了。 – mithil

+0

我試過使用上面的代碼,但仍然沒有得到ImageView.Is中的圖像是否有必要使用findViewById與上述給定的代碼?我試圖用n但沒有,但沒有用。是它有一些圖像分辨率問題設備?因爲我的PC屏幕分辨率設置爲1280 * 800,而我的Android設備的分辨率設置爲480 * 800。 – mithil

+0

使用此代碼,您需要將imageview添加到頁面 –