2013-11-28 2 views
2

У меня есть 3 задачи:Высокое качество изображения, снятый из галереи или захваченных с камеры

  1. Пика изображение из галереи
  2. Захват изображения с камеры
  3. Обрезка изображения с 1 или 2.

Качество изображения должно быть хорошим.

Есть ли решение для моей проблемы? Может быть, некоторые библиотеки?

+0

, что вы пробовали до сих пор? – MAC

+0

Что вы имеете в виду? – Val

+0

Вы еще ничего пробовали? и у вас возникли проблемы? – MAC

ответ

3

Android, по умолчанию, на самом деле имеет все перечисленные вами.

  1. Чтобы выбрать изображение из галереи

    Intent pickPhoto = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
    startActivityForResult(pickPhoto, FROM_GALLERY); 
    
  2. Для захвата изображения с камеры

    Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(takePicture, FROM_CAMERA); 
    
  3. Чтобы получать результаты вышеуказанных намерений и сделать кадрирование

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
        super.onActivityResult(requestCode, resultCode, data); 
        switch (requestCode) { 
        case FROM_GALLERY: 
        case FROM_CAMERA: { 
         if (resultCode == Activity.RESULT_OK) { 
          Uri selectedImage = data.getData(); 
    
          Intent cropIntent = new Intent("com.android.camera.action.CROP"); 
          cropIntent.setDataAndType(selectedImage, "image/*"); 
          cropIntent.putExtra("crop", "true"); 
          cropIntent.putExtra("aspectX", 1); 
          cropIntent.putExtra("aspectY", 1); 
          cropIntent.putExtra("outputX", MAX_WIDTH); 
          cropIntent.putExtra("outputY", MAX_HEIGHT); 
          cropIntent.putExtra("return-data", true); 
          startActivityForResult(cropIntent, PICTURE_CROP); 
         } 
         break; 
        } 
        case PICTURE_CROP: { 
         if (resultCode == Activity.RESULT_OK) { 
          final Bundle extras = data.getExtras(); 
    
          if (extras != null) { 
           Bitmap photo = extras.getParcelable("data"); 
    
           // Hurray! You now have the photo as a Bitmap 
          } 
         } 
         break; 
        } 
        } 
    } 
    

Update:

Согласно этому post вы не должны использовать com.android.camera.action.CROP, так как это не существует во всех устройствах. В этой должности он также перечислил альтернативные варианты, которые я перечислю здесь:

  1. https://github.com/lvillani/android-cropimage
  2. https://github.com/biokys/cropimage
+0

Что такое ParseManager? – Val

+0

Извините, это было скопировано из одного из моих проектов. Я отредактировал свой ответ, чтобы удалить код проекта. – aysonje

+0

Ваш код работает на меня, но я не могу поместить квадратное изображение по умолчанию. Посмотрите на экран: http://take.ms/6379o – Val

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