Я беру фото с использованием встроенного приложения для камеры и получаю разрешение изображения (1600 x 1200), но я хотел бы сохранить все мои изображения (1200 x 900) на SD-карту для этого я написал метод, но все еще получаю изображения в оригинальном размере.Изменить размер изображения, взятого с камеры перед сохранением
Вот мой код, который я использую для захвата и сохранения изображения в SD-карту
public class FormActivity extends AppCompatActivity {
String filePath = null;
File file;
Uri output;
final int requestCode = 100;
String stringImageName= null;
static int w = 1200;
static int h = 900;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_form);
SimpleDateFormat s = new SimpleDateFormat("ddMMyyyyhhmmss");
stringImageName = s.format(new Date());
Log.d("format::", stringImageName);
filePath = Environment.getExternalStorageDirectory() + "/"+stringImageName+".jpeg";
file = new File(filePath);
output = Uri.fromFile(file);
buttonOrderNow.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent photoCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
photoCaptureIntent.putExtra(MediaStore.EXTRA_OUTPUT, output);
startActivityForResult(photoCaptureIntent, requestCode);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(this.requestCode == requestCode && resultCode == RESULT_OK) {
resize();
}
}
private void resize() {
Long startTime = System.currentTimeMillis();
Bitmap bitmap_Source = BitmapFactory.decodeFile(filePath);
float factorH = h/(float)bitmap_Source.getHeight();
float factorW = w/(float)bitmap_Source.getWidth();
float factorToUse = (factorH > factorW) ? factorW : factorH;
Bitmap bm = Bitmap.createScaledBitmap(bitmap_Source,
(int) (bitmap_Source.getWidth() * factorToUse),
(int) (bitmap_Source.getHeight() * factorToUse),
false);
Long endTime = System.currentTimeMillis();
Long processTime = endTime - startTime;
Toast.makeText(FormActivity.this, ""+processTime, Toast.LENGTH_LONG).show();
}
Вероятно, этот вопрос был downvoted, потому что вы не показываете никаких попыток решить вашу проблему , Даже если вы посмотрите на список «связанных» вопросов справа, вы увидите [Изменить размер изображения, взятого из галереи или камеры, перед загрузкой] (http://stackoverflow.com/questions/23813604/resize-image-taken- from-gallery-or-camera-before-being-uploaded? rq = 1), который обеспечивает жизнеспособный ответ. –
@AlexCohn проверяет мой обновленный код, я дал свою попытку, но все еще проблема не решена. – Sun
Обрезка позволяет изменить размер изображений на небольшие KB's http://stackoverflow.com/questions/29532914/android-intent-with-multiple-option- ie-pick-image-from-gallary-and-capture-im/29560548 # 29560548 –