2014-06-06 4 views
2

Я хочу вращать и Сохранить мои Захваченные изображения с помощью Android Native камеры к SDCard. Как родные камеры в пейзаж по умолчанию. Но я не хочу использовать растровое изображение. Можно ли это сделать? пожалуйста помоги. Я новичок в разработке Android.Поворот и сохранить отснятое изображение без использования растрового

Как мое изображение повернуто на 90 градусов, мне нужно повернуть его, используя Растровое изображение перед сохранением. Но на некоторых устройствах bmp прилагается null.

камера активность Компоновка

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <FrameLayout 
     android:id="@+id/camera_preview" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
    /> 
</RelativeLayout> 

ManifestFile

<activity 
    android:name="com.example.androiddms.CameraActivity" 
    android:configChanges="keyboardHidden|orientation" 
    android:label="@string/title_activity_camera" 
    android:screenOrientation="landscape" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > 
</activity> 

камеры Activity.java

FileOutputStream fos = new FileOutputStream(pictureFile); 
Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length); 
Matrix matrix = new Matrix(); 
matrix.postRotate(90); 

bmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true); 
bmp.compress(Bitmap.CompressFormat.JPEG, 100,fos); 
+0

С какой проблемой вы сталкиваетесь с растровым изображением? –

+0

Bitmap использует много памяти. Хотя существуют некоторые методы их обработки. Но я просто хотел попробовать, если бы я мог сохранить ** Captured Image **, не используя ** Bitmaps ** вообще. – ZZeyaNN

ответ

0

Вы должны позвонить по телефону onActivityResult после съемки с камеры и показать снятое изображение на ImageView. Bitmap берет память, но вы должны ее обрабатывать. Выполните следующие шаги, мы надеемся решить вашу проблему

ШАГ 1: открытый camera Intent и захвата изображения из него:

private static final int REQUEST_CAMERA = 0; 

Bitmap bmp; 

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 

startActivityForResult(intent, REQUEST_CAMERA); 

ШАГ 2:override onActivityResult Метод

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
     super.onActivityResult(requestCode, resultCode, data); 

     if(resultCode == RESULT_OK) 
     { 
      if(requestCode == REQUEST_CAMERA) 
      {    
       Uri uri = (Uri) data.getData(); 

       try 
       { 
        bmp = decodeUri(uri); 

        your_image_view.setImageBitmap(bmp); 
       } 
       catch (FileNotFoundException e) 
       { 
        e.printStackTrace(); 
       } 
      } 

     } 
    } 

ШАГ 3 : копировать ниже метод и вставлять его в Activity

private Bitmap decodeUri(Uri selectedImage) throws FileNotFoundException 
    { 
     BitmapFactory.Options o = new BitmapFactory.Options(); 

     o.inJustDecodeBounds = true; 

     BitmapFactory.decodeStream(
       getContentResolver().openInputStream(selectedImage), null, o); 

     final int REQUIRED_SIZE = 70; 

     int width_tmp = o.outWidth, height_tmp = o.outHeight; 

     int scale = 1; 

     while (true) 
     { 
      if (width_tmp/2 < REQUIRED_SIZE || height_tmp/2 < REQUIRED_SIZE) 
      { 
       break; 
      } 
      width_tmp /= 2; 

      height_tmp /= 2; 

      scale *= 2; 
     } 

     BitmapFactory.Options o2 = new BitmapFactory.Options(); 

     o2.inSampleSize = scale; 

     return BitmapFactory.decodeStream(
       getContentResolver().openInputStream(selectedImage), null, o2); 
    } 

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

Смежные вопросы