大家好,我上传图像到服务器,但我面临着奇怪的问题。假设我选择了一个图像并上传了它,然后我再次选择其他图像并上传,但问题是以前上传的图像是随着大小的增加而上传的。我尝试了bitmap recycle(),但它不起作用。我也选择了imageview它显示的是正确的图像,但在上传时它上载的是以前的图像尺寸增大。下面是我的代码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GetImageFromGalleryButton = (Button)findViewById(R.id.buttonSelect);
UploadImageOnServerButton = (Button)findViewById(R.id.buttonUpload);
ShowSelectedImage = (ImageView)findViewById(R.id.imageView);
imageName=(EditText)findViewById(R.id.imageName);
byteArrayOutputStream = new ByteArrayOutputStream();
GetImageFromGalleryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showPictureDialog();
}
});
uploadImageOnServerButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
GetImageNameFromEditText = imageName.getText().toString();
uploadImageToServer();
}
});
if (ContextCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{android.Manifest.permission.CAMERA},
5);
}
}
}
private void showPictureDialog(){
AlertDialog.Builder pictureDialog = new AlertDialog.Builder(this);
pictureDialog.setTitle("Select Action");
String[] pictureDialogItems = {
"Photo Gallery",
"Camera" };
pictureDialog.setItems(pictureDialogItems,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case 0:
choosePhotoFromGallary();
break;
case 1:
takePhotoFromCamera();
break;
}
}
});
pictureDialog.show();
}
public void choosePhotoFromGallary() {
Intent galleryIntent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(galleryIntent, GALLERY);
}
private void takePhotoFromCamera() {
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, CAMERA);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == this.RESULT_CANCELED) {
return;
}
if (requestCode == GALLERY) {
if (data != null) {
Uri contentURI = data.getData();
try {
FixBitmap =MediaStore.Images.Media.getBitmap(this.getContentResolver(), contentURI));
// String path = saveImage(bitmap);
//Toast.makeText(MainActivity.this, "Image Saved!", Toast.LENGTH_SHORT).show();
ShowSelectedImage.setImageBitmap(FixBitmap);
UploadImageOnServerButton.setVisibility(View.VISIBLE);
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, "Failed!", Toast.LENGTH_SHORT).show();
}
}
} else if (requestCode == CAMERA) {
FixBitmap = (Bitmap) data.getExtras().get("data");
ShowSelectedImage.setImageBitmap(FixBitmap);
UploadImageOnServerButton.setVisibility(View.VISIBLE);
// saveImage(thumbnail);
//Toast.makeText(ShadiRegistrationPart5.this, "Image Saved!", Toast.LENGTH_SHORT).show();
}
}
public void uploadImageToServer(){
FixBitmap.compress(Bitmap.CompressFormat.JPEG, 40, byteArrayOutputStream);
byteArray = byteArrayOutputStream.toByteArray();
ConvertImage = Base64.encodeToString(byteArray, Base64.DEFAULT);
class asyncTaskUploadClass extends asyncTask<Void,Void,String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = ProgressDialog.show(MainActivity.this,"Image is Uploading","Please Wait",false,false);
}
@Override
protected void onPostExecute(String string1) {
super.onPostExecute(string1);
progressDialog.dismiss();
Toast.makeText(MainActivity.this,string1,Toast.LENGTH_LONG).show();
}
@Override
protected String doInBackground(Void... params) {
ImageProcessClass imageProcessClass = new ImageProcessClass();
HashMap<String,String> HashMapParams = new HashMap<String,String>();
HashMapParams.put(ImageTag, GetImageNameFromEditText);
HashMapParams.put(ImageName, ConvertImage);
String FinalData = imageProcessClass.ImageHttpRequest("http://techvengerlabs.tk/new/upload-image-to-server.php", HashMapParams);
return FinalData;
}
}
asyncTaskUploadClass asyncTaskUploadClassOBJ = new asyncTaskUploadClass();
asyncTaskUploadClassOBJ.execute();
FixBitmap.eraseColor(Color.TRANSPARENT);
}
public class imageProcessClass{
public String imageHttpRequest(String requestURL,HashMap<String, String> PData) {
StringBuilder stringBuilder = new StringBuilder();
try {
url = new URL(requestURL);
httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setReadTimeout(20000);
httpURLConnection.setConnectTimeout(20000);
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoInput(true);
httpURLConnection.setDoOutput(true);
outputStream = httpURLConnection.getOutputStream();
bufferedWriter = new BufferedWriter(
new OutputStreamWriter(outputStream, "UTF-8"));
bufferedWriter.write(bufferedWriterDataFN(PData));
bufferedWriter.flush();
bufferedWriter.close();
outputStream.close();
RC = httpURLConnection.getResponseCode();
if (RC == HttpsURLConnection.HTTP_OK) {
bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
stringBuilder = new StringBuilder();
String RC2;
while ((RC2 = bufferedReader.readLine()) != null){
stringBuilder.append(RC2);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return stringBuilder.toString();
}
private String bufferedWriterDataFN(HashMap<String, String> HashMapParams) throws UnsupportedEncodingException {
stringBuilder = new StringBuilder();
for (Map.Entry<String, String> KEY : HashMapParams.entrySet()) {
if (check)
check = false;
else
stringBuilder.append("&");
stringBuilder.append(URLEncoder.encode(KEY.getKey(), "UTF-8"));
stringBuilder.append("=");
stringBuilder.append(URLEncoder.encode(KEY.getValue(), "UTF-8"));
}
return stringBuilder.toString();
}
}
暂无答案!
目前还没有任何答案,快来回答吧!