1

我有在java中从屏幕捕获图像的代码,我将最终捕获的图像作为 BufferedImage 对象并可以将其转换为 ImageIcon

问题是当将该文件发送到 android 时无法将其读取为可绘制的位图。有人对此有答案吗?

要发送的代码 (Java)

            BufferedImage image = robot.createScreenCapture(rectangle);
        ImageIcon imageIcon = new ImageIcon(image);

        //Send captured screen to the server
        try {
            System.out.println("before sending image");      

            oos.writeObject(imageIcon);
            oos.reset(); //Clear ObjectOutputStream cache
            System.out.println("New screenshot sent");
        } catch (IOException ex) {
           ex.printStackTrace();
        }

安卓接收器部分

Thread t= new Thread(new Runnable() {

        @Override
        public void run() {
            while (true) {


                try {

                    client= sc.accept();
                    is = client.getInputStream();

                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                BitmapDrawable imageIcon = null;

                try {
                    ois = new ObjectInputStream(is);
                    imageIcon = (BitmapDrawable) ois.readObject();
                    //Drawable d = Drawable.createFromStream(is, null);
                    IV.setImageDrawable(imageIcon);
                } catch (OptionalDataException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (ClassNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                System.out.println("New image recieved");


            }

        }

我得到的例外是它不能将 imageIcon 或 BufferedImage 转换为 Bitmap drawable。

4

1 回答 1

0

你不应该使用对象,因为oracle jvm和android的dalvik不一样。尝试将捕获的图像转换为原始字节并将这些字节发送到 android。然后在android中将此原始数据转换为drawable。

于 2013-04-28T15:58:29.187 回答