使用android中的套接字将图像从服务器发送到客户端后图像格式无效

时间:2017-05-16 11:00:59

标签: android image sockets

我正在尝试将图像从服务器套接字发送到客户端套接字,所以我得到正确的图像路径并转换为字节,从客户端我也接收数据但是在保存到存储后它没有打开文件,它显示无效图像。

  

图像尺寸正确但尺寸为-1 X -1

服务器端代码onActivityResult我正在获取图像URI

load()

客户端代码

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {

        Uri uri = data.getData();
        String path = uri.getPath();
        Log.e(TAG, path);


        if (mBoundService != null) {
            mSOcket = mBoundService.getSocket();
            mSocketArraylist = mBoundService.getSocketArrayList();
            if (mSocketArraylist != null) {

                for (int i = 0; i < mSocketArraylist.size(); i++) {
                    Socket mSocket = mSocketArraylist.get(i);
                    OutputStream os = null;
                    try {
                        os = mSocket.getOutputStream();
                        ContentResolver cr = mContext.getContentResolver();
                        InputStream is = null;
                        try {
                            is = cr.openInputStream(Uri.parse(uri.toString()));
                        } catch (FileNotFoundException e) {
                            Log.d(TAG, e.toString());
                        }


                        copyFile(is, os);

                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }

            } else {
                Log.e("Socket value", "Socket is null");
            }

        }


    }
}

copyFile方法实现如下:

  if (wifiInfo != null) {
        if (!wifiInfo.isGroupOwner) {
            String host = wifiInfo.groupOwnerAddress.getHostAddress();

            Socket clientSocket = new Socket();

            OutputStream os = null;

            try {
                clientSocket.bind(null);
                clientSocket.setKeepAlive(true);
                clientSocket.connect((new InetSocketAddress(host, port)), SOCKET_TIMEOUT);

                os = clientSocket.getOutputStream();
                PrintWriter pw = new PrintWriter(os);


                InputStream is = clientSocket.getInputStream();
                InputStreamReader isr = new InputStreamReader(is);
                BufferedReader br = new BufferedReader(isr);
                String data = br.readLine();

                Log.e(TAG, data + "");


                final File f = new File(Environment.getExternalStorageDirectory() + "/"
                        + ClientService.this.getPackageName() + "/wifip2pshared-" + System.currentTimeMillis()
                        + ".jpg");


                File dirs = new File(f.getParent());
                if (!dirs.exists())
                    dirs.mkdirs();
                f.createNewFile();

                String line;
                while (true) {
                    Log.d(TAG, "server: copying files " + f.toString());
                    InputStream inputstream = clientSocket.getInputStream();
                    copyFile(inputstream, new FileOutputStream(f));

                    break;
                }

                signalActivity(f.getAbsolutePath());
                Thread.sleep(500000);
            } catch (IOException e) {
                Log.e(TAG, e.getMessage());
            } catch (Exception e) {
                Log.e(TAG, e.getMessage());

            }

所以任何人都可以帮助我。

0 个答案:

没有答案