Как правильно отредактировать изображение с SD-карты и сохранить его обратно - PullRequest
0 голосов
/ 15 апреля 2011

Мое приложение получает доступ к камере и захватывает изображение, а затем сохраняет его обратно в SDCARD .
Проблема в том, что изображение довольно большое: 1500х2500 пикселей и 500 КБ.
Я должен загрузить изображение на сервер.
Поэтому я подумал о редактировании изображения, но хочу отредактировать изображение в правильной композиции, то есть в правильном соотношении высоты и ширины, чтобы изображение не выглядело нечетным

Код, который я использую:

FileInputStream in = new FileInputStream("/mnt/sdcard/DCIM/1302779969138");
BufferedInputStream buf = new BufferedInputStream(in)                                 
Bitmap bm = BitmapFactory.decodeStream(buf);
File isfile = new File(Environment.getExternalStorageDirectory(),"/DCIM/1302779969138");
FileOutputStream fout = new FileOutputStream(isfile);
Bitmap bitmap = null;

bitmap = Bitmap.createScaledBitmap(bm, 350, 350, true);
bitmap.compress(CompressFormat.JPEG, 20, fout);

С помощью приведенного выше кода я могу изменить размер изображения до 350 X 350, но я хочу масштабировать его с использованием только ширины в качестве параметра, чтобы высота регулировалась соответствующим образом, а соотношение изображений оставалось неизменным

Плюс также упомяните, следует ли мне промывать Fileoutputsteam и inputStream

1 Ответ

1 голос
/ 15 апреля 2011

Как масштабировать изображение, сохраняя его пропорции:

orig_width = bm.getWidth();
orig_height = bm.getHeight();
aspect = orig_width / orig_height;
new_width = 500;
new_height = orig_height / aspect;

или

new_height = 500;
new_width = orig_width * aspect;
...