以下是重现此方案的代码:
所有这些部分都运行正常,但我想解决的问题是上传图片的大小太大了:大约2Mo。
我想创建一个捕获图像的阴影副本,以便根据第一个创建较小的照片。 (如果可能的话,我们可以覆盖第一个。)
我不知道如何做到这一点,以及我的代码在哪里做到这一点?
初始化目标文件的代码:
String uniqueID = UUID.randomUUID().toString();
String name = dateToString(new Date(),"yyyy-MM-dd-hh-mm-ss");
imageToStore = name + uniqueID + ".jpg";
destination = new File(Environment.getExternalStorageDirectory(), imageToStore);
当用户点击按钮时,它会开始拍照:
takePhoto.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(destination));
startActivityForResult(intent, REQUEST_IMAGE);
overridePendingTransition(R.anim.left_to_right, R.anim.right_to_left);
}
});
处理捕获的代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if( requestCode == REQUEST_IMAGE && resultCode == Activity.RESULT_OK ){
try {
preview.setVisibility(View.VISIBLE);
takePhoto.setVisibility(View.GONE);
txtHaut.setText("Cette image est parfaite !");
FileInputStream in = new FileInputStream(destination);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 8;
imagePath = destination.getAbsolutePath();
Log.d("INFO", "PATH === " +imagePath);
Bitmap bmp = BitmapFactory.decodeStream(in, null, options);
preview.setImageBitmap(bmp);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
else{
tvPath.setText("Request cancelled");
}
}
最后,当用户点击“创建annonce”按钮时,它会上传照片:
btnCreate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog = ProgressDialog.show(New_annonce_act_step3.this, "", "Création de votre annonce en cours ..", true);
new Thread(new Runnable() {
public void run() {
uploadFile(imagePath);
}
}).start();
}
});