【问题标题】:Android Java: Receive Image over SocketAndroid Java:通过套接字接收图像
【发布时间】:2014-03-25 07:23:51
【问题描述】:

我有一个基于套接字的通信应用程序。 客户端向服务器发送图像:

ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
        byte[] byteArray = stream.toByteArray();
        OutputStream os;
        try {
            os = MyClient.socket.getOutputStream();
            os.write(byteArray,0,byteArray.length);
            os.flush();

在服务器端,我想接收图像,但目前它只显示许多不同的字符。如果客户只是发送一个文本,我会收到它:

BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream()));
String text = input.readLine();

但是我怎样才能在服务器端“解码”字节[]?

【问题讨论】:

    标签: java android image sockets outputstream


    【解决方案1】:

    类似于您发送该图像的方式。只需像这样使用InputStream 对象:

    InputStream stream = socket.getInputStream();
    byte[] data = new byte[MAX_SIZE];
    int count = stream.read(data);
    

    这两个对象(发送和接收)是兼容的,您只需要知道byte 数组大小,它必须在两个地方都相同。

    【讨论】:

    • 好吧,这听起来比我想象的要容易,但如果与 int 计数有关怎么办?
    • 其实没什么。它只返回读取的字节数,但您不需要它,调用您将数组存储在您的 data 对象中。
    • 啊,好吧,我可以用 Bitmapfactory 把它放到位图上吗?
    • 当然,一旦你得到byte[],你可以将它设置为你需要的任何东西,BitmapFactory 也可以与它们一起使用。
    猜你喜欢
    • 2023-03-05
    • 2017-02-25
    • 2014-08-16
    • 2021-06-09
    • 1970-01-01
    • 2014-07-17
    • 2015-03-22
    • 2012-06-08
    • 2022-01-18
    相关资源
    最近更新 更多