0

Android から C++ で記述されたサーバーに画像を送信したいと考えています。C++ と Java の違いを気にする必要がないように、ソケットを使用して画像を送信したいと考えています。ただし、Android では通常、画像は Android で定義されているクラスである Bitmap として格納されますが、C++ ではこのクラスは存在しません。では、この方法で画像を送信したい場合はどうすればよいのでしょうか。だから私はあなたの助けを求めてここに来ました、ありがとう。

4

3 に答える 3

0

画像を .jpg や .png などのファイルとして送信します

于 2012-05-07T11:33:27.693 に答える
0

C ++で書かれているとおっしゃっているように、サーバーはカスタムシステムであると想定しています。その場合、tcp/ip ごとにソケットを介してサイズ (x、y) と rgba データ (ピクセルあたり 32 ビット) を送信するだけです。

クライアント (android) からサーバー (c++) への tcp/ip 接続を開き、ビットマップからサイズとデータを送信し、サーバー側で再構築して保存するか、任意の方法で処理するだけです。 .

「getPixels」を使用して、Android ビットマップの rgba データを取得できます。

http://developer.android.com/reference/android/graphics/Bitmap.html

送信するシステムに応じて設定することもできます。Windows システムを使用している場合は、「setdibbits」で設定できます。

http://msdn.microsoft.com/en-us/library/dd162973%28v=vs.85%29.aspx

于 2012-05-07T11:38:44.350 に答える
0

これは、パラメーターと投稿画像を送信するために使用するものです!

public void send_data() throws IOException
    {


                HttpURLConnection connection = null;
                DataOutputStream outputStream = null;
                String lineEnd = "\r\n";
                String twoHyphens = "---";
                String boundary =  "ABCADA";

                String urlServer = "http://yourwebsrvr.com";
                Log.w("DHA", urlServer);
                URL url = null;
                try {
                    url = new URL(urlServer);
                } catch (MalformedURLException e1) {

                    Log.w("DHA", "PROTOCOL EXCEPTION");

                    e1.printStackTrace();
                }
                if (url != null)
                {   
                    Log.w("DHA", "Merge aici");
                    try {
                        connection = (HttpURLConnection) url.openConnection();
                    } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                    if (connection != null)
                    {
                        Log.w("DHA", "Si aici mere!");
                        connection.setDoInput(true);
                        connection.setDoOutput(true);
                        connection.setUseCaches(false);
                        try {
                            connection.setRequestMethod("POST");
                        } catch (ProtocolException e) {

                            Log.w("DHA", "PROTOCOL EXCEPTION");

                            e.printStackTrace();
                            return;
                        }
                        connection.setRequestProperty("Host", "yourhost.com");
                        connection.setRequestProperty("Connection", "Keep-Alive");
                        connection.setRequestProperty("Content-Type", "multipart/form-data;boundary=ABCADA");
                        try {
                            outputStream = new DataOutputStream(connection.getOutputStream());
                        } catch (IOException e) {

                            Log.w("DHA", "PROTOCOL EXCEPTION");

                            e.printStackTrace();

                        }
                        try {
                            Log.w("DHA", "Val is + " + String.valueOf(bts.size()));
                            outputStream.writeBytes(twoHyphens + boundary + lineEnd);
                            outputStream.writeBytes("Content-Disposition: form-data; name=\"Lat\"" + lineEnd);
                            outputStream.writeBytes(lineEnd);
                            outputStream.writeBytes("0" + lineEnd);

                            outputStream.writeBytes(twoHyphens + boundary + lineEnd);
                            outputStream.writeBytes("Content-Disposition: form-data; name=\"IMEI\"" + lineEnd);
                            outputStream.writeBytes(lineEnd);
                            outputStream.writeBytes(getImei() + lineEnd);

                            outputStream.writeBytes(twoHyphens + boundary + lineEnd);
                            outputStream.writeBytes("Content-Disposition: form-data; name=\"Lon\"" + lineEnd);
                            outputStream.writeBytes(lineEnd);
                            outputStream.writeBytes("0" + lineEnd);

                            outputStream.writeBytes(twoHyphens + boundary + lineEnd);
                            outputStream.writeBytes("Content-Disposition: form-data; name=\"comment\"" + lineEnd);
                            outputStream.writeBytes(lineEnd);
                            outputStream.writeBytes("Incarcata la sincronizare" + lineEnd); 

                            outputStream.writeBytes(twoHyphens + boundary + lineEnd);
                            outputStream.writeBytes("Content-Disposition: form-data; name=\"locatie_id\"" + lineEnd);
                            outputStream.writeBytes(lineEnd);
                            SharedPreferences pref = getSharedPreferences("data",MODE_WORLD_WRITEABLE);
                            String data_db = pref.getString(md5hash, "0");
                            Log.d("DHA", "Poze e aici " + data_db);
                            outputStream.writeBytes(data_db + lineEnd); 

                            outputStream.writeBytes(twoHyphens + boundary + lineEnd);
                            outputStream.writeBytes("Content-Disposition: form-data; name=\"hash\"" + lineEnd);
                            outputStream.writeBytes(lineEnd);
                            outputStream.writeBytes(md5hash + lineEnd); 

                            outputStream.writeBytes(twoHyphens + boundary + lineEnd);
                            outputStream.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + "PICT0000" +"\"" + lineEnd);
                            outputStream.writeBytes(lineEnd);
                            outputStream.write(bts.toByteArray());
                            outputStream.writeBytes(lineEnd);
                            outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
                            Log.w("DHA", "Incep trimiterea pozei fraierului!");

                            outputStream.flush();
                            outputStream.close();
                            Log.w("DHA", "response" + String.valueOf(connection.getResponseCode()));

                        } catch (IOException e) {

                            Log.w("DHA", "PROTOCOL EXCEPTION");

                            e.printStackTrace();
                        }



            }
                }


            }
于 2012-05-07T11:58:43.557 に答える