ユーザーは、カメラを介して Android 側で 5 ~ 6 枚の写真を撮ることができます。そこで、ACTION_IMAGE_CAPTURE を使用しました。onActivityResult では、カメラが撮影した画像のビットマップを収集するためにこれを行います。最初に撮影した写真と 2 番目に撮影した写真を以下のように仮定します。
if(requestCode == 1)
{
bitMap1 = (Bitmap)extras.get("data");
imageView1.setImageBitmap(bitMap1);
globalvar = 2;
}
if(requestCode == 2)
{
bitMap1 = (Bitmap)extras.get("data");
imageView2.setImageBitmap(bitMap2);
globalvar = 2;
}
これらの画像を php サーバーに送信するには、次のようにします。
protected String doInBackground(Integer... args) {
// Building Parameters
ByteArrayOutputStream bao1 = new ByteArrayOutputStream();
bitMap1.compress(Bitmap.CompressFormat.JPEG, 90, bao1);
byte [] bytearray1 = bao1.toByteArray();
String stringba1 = Base64.encode(bytearray1);
ByteArrayOutputStream bao2 = new ByteArrayOutputStream();
bitMap2.compress(Bitmap.CompressFormat.JPEG, 90, bao2);
byte [] bytearray2 = bao2.toByteArray();
String stringba2 = Base64.encode(bytearray2);
String parameter1 = "tenant";
String parameter2 = "price";
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("person",parameter1));
params.add(new BasicNameValuePair("price",parameter2));
params.add(new BasicNameValuePair("image1",stringba1));
params.add(new BasicNameValuePair("image2",stringba2));
JSONObject json = jParser.makeHttpRequest(requiredurl, "POST", params);
Log.d("Details", json.toString());
int success = json.getInt("connected");
if (success == 1) {
//blah blah
}
}
makeHttpRequest() メソッドは次のとおりです。
public JSONObject makeHttpRequest(String url, String method,
List<NameValuePair> params) {
// Making HTTP request
try {
// check for request method
if(method == "POST"){
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}
................
....................... // Here the result is extracted and made it to json object
.............................
// return JSON
return jObj; // returning the json object to the method that calls.
}
以下はphpコードスニペットです:
$name = $_POST[person];
$price = $_POST[price];
$binary1 = base64_decode($image2);
$binary2 = base64_decode($image2);
$file1 = tempnam($uploadPath, 'image2');
$fp1 = fopen($file1, 'wb');
fwrite($fp1, $binary1);
fclose($fp1);
.................
............................
ただし、サーバー側のフォルダーに画像を保存できません。複数の画像をアップロードする際に Base64 は好ましくない方法であると言っているいくつかのリンクを見たことがあります。誰かが私にどのように進めるか教えてもらえますか? これと他の多くのリンクを見てきましたが、その画像と一緒にいくつかのデータ(人の名前、価格など)を送信する必要があるため、要件を続行する方法がわかりません。これに関するヘルプは大歓迎です。
注:上記の一時ファイル ($file1) をサーバー フォルダーに保存する方法を誰かが教えてくれても、とても感謝しています。