使用 POST 存储来自以编程方式添加的 ImageView 的多个图像
Store multiple Image from programatically added ImageView with POST
我有 EditText 和 Button,我可以在 EditText 中输入我想在我的应用程序上显示多少个 ImageView 的数字。比方说,我写 3 然后它会在布局上显示 3 个 ImageViews 并且工作正常。
我成功拍照并显示在那些 ImageView 上。
container.removeAllViews();
for (int i = 1; i <= no; i++) {
final View addView = layoutInflater.inflate(R.layout.shelter_row, null);
txtV1 = (TextView) addView.findViewById(R.id.txtV1);
txtV1.setText(String.valueOf(i));
addView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
imgLantai = (ImageView)view.findViewById(R.id.imgLantai);
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent,CAMERA_10);
}
});
container.addView(addView);
}
我尝试获取位图并将其显示在 ImageView 上。有效
if(requestCode == CAMERA_10){
if(resultCode == RESULT_OK){
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
ByteArrayOutputStream output = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, output);
byte[] byte_arr = output.toByteArray();
mbitmap10 = Base64.encodeToString(byte_arr, Base64.DEFAULT);
imgLantai.setImageBitmap(bitmap);
}else if(resultCode == RESULT_CANCELED){
}
}
通过使用提交按钮,我尝试使用 POST
将位图插入数据库
public void insertFoto(){
final String URL = "http://www.lineitopkal.com/genset/insert_site.php";
final ProgressDialog loading = ProgressDialog.show(this,"Uploading...","Please wait...",false,false);
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if(response.contains("success")) {
loading.dismiss();
Toast.makeText(getApplicationContext(),mbitmap01,Toast.LENGTH_SHORT).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
loading.dismiss();
Toast.makeText(getApplicationContext(),"Data gagal disimpan",Toast.LENGTH_SHORT).show();
}
}){
@Override
protected Map<String, String> getParams(){
Map<String, String> params = new HashMap<String, String>();
params.put("lantai",mbitmap10);
return params;
}
};
stringRequest.setRetryPolicy(new DefaultRetryPolicy(0, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
RequestQueue rq = Volley.newRequestQueue(this);
rq.add(stringRequest);
}
我似乎无法使用 POST 将所有图像(mbitmap10 图像)存储在数据库中。仅存储最新图像。我应该使用数组来存储图像吗?如果是这样,我该如何实施?还是有别的办法?
注意:这是一般性的pseudo-code,用于演示概念和回答一般性问题
1) 在您的应用中放置一个空的位图数组:
Bitmap[] allBitmaps = new Bitmap[];
2) 每次将新图像分配给其中一个图像视图时,将其添加到图像视图对应位置的数组中 -- allBitmaps[2] = imageView2.getBitmap...
3) 然后,当用户点击提交时,执行如下操作:
@Override
protected Map<String, String> getParams(){
Map<String, String> params = new HashMap<String, String>();
// int paramNumber = 0;
// for (bitmap : allBitmaps) {
// params.put"paramNumber.toString()",bitmap);
// paramNumber ++;
// }
return params;
}
我有 EditText 和 Button,我可以在 EditText 中输入我想在我的应用程序上显示多少个 ImageView 的数字。比方说,我写 3 然后它会在布局上显示 3 个 ImageViews 并且工作正常。
我成功拍照并显示在那些 ImageView 上。
container.removeAllViews();
for (int i = 1; i <= no; i++) {
final View addView = layoutInflater.inflate(R.layout.shelter_row, null);
txtV1 = (TextView) addView.findViewById(R.id.txtV1);
txtV1.setText(String.valueOf(i));
addView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
imgLantai = (ImageView)view.findViewById(R.id.imgLantai);
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent,CAMERA_10);
}
});
container.addView(addView);
}
我尝试获取位图并将其显示在 ImageView 上。有效
if(requestCode == CAMERA_10){
if(resultCode == RESULT_OK){
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
ByteArrayOutputStream output = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, output);
byte[] byte_arr = output.toByteArray();
mbitmap10 = Base64.encodeToString(byte_arr, Base64.DEFAULT);
imgLantai.setImageBitmap(bitmap);
}else if(resultCode == RESULT_CANCELED){
}
}
通过使用提交按钮,我尝试使用 POST
将位图插入数据库public void insertFoto(){
final String URL = "http://www.lineitopkal.com/genset/insert_site.php";
final ProgressDialog loading = ProgressDialog.show(this,"Uploading...","Please wait...",false,false);
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if(response.contains("success")) {
loading.dismiss();
Toast.makeText(getApplicationContext(),mbitmap01,Toast.LENGTH_SHORT).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
loading.dismiss();
Toast.makeText(getApplicationContext(),"Data gagal disimpan",Toast.LENGTH_SHORT).show();
}
}){
@Override
protected Map<String, String> getParams(){
Map<String, String> params = new HashMap<String, String>();
params.put("lantai",mbitmap10);
return params;
}
};
stringRequest.setRetryPolicy(new DefaultRetryPolicy(0, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
RequestQueue rq = Volley.newRequestQueue(this);
rq.add(stringRequest);
}
我似乎无法使用 POST 将所有图像(mbitmap10 图像)存储在数据库中。仅存储最新图像。我应该使用数组来存储图像吗?如果是这样,我该如何实施?还是有别的办法?
注意:这是一般性的pseudo-code,用于演示概念和回答一般性问题
1) 在您的应用中放置一个空的位图数组:
Bitmap[] allBitmaps = new Bitmap[];
2) 每次将新图像分配给其中一个图像视图时,将其添加到图像视图对应位置的数组中 -- allBitmaps[2] = imageView2.getBitmap...
3) 然后,当用户点击提交时,执行如下操作:
@Override
protected Map<String, String> getParams(){
Map<String, String> params = new HashMap<String, String>();
// int paramNumber = 0;
// for (bitmap : allBitmaps) {
// params.put"paramNumber.toString()",bitmap);
// paramNumber ++;
// }
return params;
}