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