Взять изображение с SD-карты, сжать его и сохранить обратно на SD?

Я пытаюсь захватить изображение с камеры, и если оно слишком большое, я хочу сжать растровое изображение и отправить его обратно на SD-карту. Сначала я пытался вытащить изображение непосредственно во внутреннюю память, но, по-видимому, согласно этому ответу на мой предыдущий вопрос, я могу это сделать: изображение Android с камеры, сделанное в очень маленьком размере

Как я могу вернуть этот файл изображения обратно во внутреннюю память моего приложения?


person jfisk    schedule 07.09.2011    source источник


Ответы (3)


Вы можете изменить масштаб изображения, используя приведенный ниже код.

Bitmap yourBitmap;
Bitmap resized = Bitmap.createScaledBitmap(yourBitmap, newWidth, newHeight, true);

Это сожмет ваше изображение до меньшего размера, вам просто нужно указать новую высоту и ширину в соответствии с вашими требованиями.

person Tanuja Gupta    schedule 03.02.2014

При нажатии кнопки Вызов метода для сохранения изображения на SD-карту:

SaveImage(bitmap);

Сохранение изображения на SD-карту:

private void SaveImage(Bitmap finalBitmap) {

  String root = Environment.getExternalStorageDirectory().toString();
  File myDir = new File(root + "/demo_images");    
  myDir.mkdirs();
  Random generator = new Random();
  int n = 10000;
  n = generator.nextInt(n);
  fname = "Image-"+ n +".jpg";
  File file = new File (myDir, fname);
// Below code will give you full path in TextView

> txtPath1.setText(file.getAbsolutePath());

  if (file.exists ()) file.delete (); 
  try {
         FileOutputStream out = new FileOutputStream(file);
         finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
         out.flush();
         out.close();

  } catch (Exception e) {
         e.printStackTrace();
  }
}

Для получения изображения с SdCard:

Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
imageview.setImageDrawable(bitmap);

Для сохранения изображения во внутренней памяти:

Сохранение и чтение растровых изображений/изображений из внутренней памяти в Android

person Sagar Shah    schedule 03.02.2014

Изображение, которое вы получаете с камеры, уже сжато в формате jpeg. Вы никогда не получите необработанное изображение с камеры.

person bluefalcon    schedule 08.09.2011