如何解决我正在创建一个捕获图像并上传到服务器的应用程序尝试上传之前的图片时上传
当我上传图像时,先前捕获的图像被上传,并且第一次上传android:src图像(默认图像)。在Imageview中,我获取了捕获的图像,但是当我上传之前的图像时,它会被上传。我认为位图正在与以前的图像位图合并。请帮助我找到问题。这是我的MainActivity.java
'''
package com.example.uploadpicture;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Base64;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolBox.StringRequest;
import com.android.volley.toolBox.Volley;
import java.io.ByteArrayOutputStream;
import java.util.HashMap;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
Button ChooseBn,Uploadbn;
ImageView imgView;
final int CAMERA_REQUEST = 1888;
private static final int MY_CAMERA_PERMISSION_CODE = 100;
Bitmap bitmap;
String urlUpload = "http://192.168.1.136/api_demo/upload.PHP";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Uploadbn = (Button) findViewById(R.id.uploadbn);
ChooseBn = (Button) findViewById(R.id.chooseBn);
imgView = (ImageView) findViewById(R.id.ImageView);
ChooseBn.setonClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
public void onClick(View v) {
if (checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{Manifest.permission.CAMERA},MY_CAMERA_PERMISSION_CODE);
} else {
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent,CAMERA_REQUEST);
}
ActivityCompat.requestPermissions(
MainActivity.this,new String[]{Manifest.permission.CAMERA},CAMERA_REQUEST
);
}
});
Uploadbn.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ByteArrayOutputStream OutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG,100,OutputStream);
byte[] imageBytes = OutputStream.toByteArray();
final String imageString = Base64.encodetoString(imageBytes,Base64.DEFAULT);
StringRequest stringRequest = new StringRequest(Request.Method.POST,urlUpload,new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getApplicationContext(),response,Toast.LENGTH_LONG).show();
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),"error: " + error.toString(),Toast.LENGTH_LONG).show();
}
}) {
@Override
protected Map<String,String> getParams() throws AuthFailureError {
Map<String,String> params = new HashMap<>();
params.put("image",imageString);
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
requestQueue.add(stringRequest);
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode,@NonNull String[] permissions,@NonNull int[] grantResults) {
if (requestCode == MY_CAMERA_PERMISSION_CODE) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent,CAMERA_REQUEST);
} else {
Toast.makeText(getApplicationContext(),"YOU DON'T HAVE PERMISSION",Toast.LENGTH_LONG).show();
}
return;
}
super.onRequestPermissionsResult(requestCode,permissions,grantResults);
}
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data) {
if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {
Uri filePath = data.getData();
try {
//getting image from gallery
bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(),filePath);
//Setting image to ImageView
imgView.setimageBitmap(bitmap);
} catch (Exception e) {
e.printstacktrace();
}
bitmap = ((BitmapDrawable) imgView.getDrawable()).getBitmap();
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
imgView.setimageBitmap(bitmap);
}
super.onActivityResult(requestCode,resultCode,data);
}
}
这是我的PHP脚本
<<?PHP
$target_dir= "upload/images";
$image = $_POST["image"];
if (!file_exists($target_dir)){
mkdir($target_dir,0777,true);
}
$target_dir = $target_dir."/"."_1".".jpeg";
if(file_put_contents($target_dir,base64_decode($image))) {
echo json_encode([
"Message" => "The file is uploaded","Status" => "OK"
]);
} else {
echo json_encode([
"Message" => "error while uploading","Status" => "error"
]);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。