2016-07-08 1 views
3

У меня есть встроенная библиотека изображений обложек в моем приложении, которые имеют функцию для взятия и использования снимка, сделанного с помощью камеры. Мой разработчик сделал это так, как ожидалось, но теперь, когда я проверил, сделайте снимок с камеры, а не снимет изображение и установите его на странице обрезки, его размытие перед тем, как мы его установили. Мой разработчик не отвечает требованиям. Я попросил разработчик библиотеки, и они дали мне решение для интеграции коды, как показано нижеСнимок сделан с камеры

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);Uri outputFileUri = Uri.fromFile(new File(context.getExternalCacheDir().getPath(), "pickImageResult.jpeg"));intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 

и мой разработчик интегрирует код, как показано ниже в моем приложении

@Override 
         public void onClick(DialogInterface dialog, int which) { 
          Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
          if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
           startActivityForResult(takePictureIntent,REQ_PHOTO_CAMERA); 
          } 
         } 

, а также метод, как показано ниже

public final int REQ_PHOTO_CAMERA=243; 
public final int REQ_PHOTO_GALLERY=346; 
public final int REQ_APP_GALLERY=427; 

public final int ACTION_CHANGE_BACKGROUND=1; 
public final int ACTION_CHANGE_AUTHOR=2; 

private int mChangeAction; 

public void onActivityResult(int req,int res,Intent data){ 
    if(res==RESULT_OK){ 
     if(req==REQ_PHOTO_CAMERA){ 
      Bitmap cameraImg = (Bitmap) data.getExtras().get("data"); 
      cropAndSaveImage(cameraImg); 
      //updateCustomImage(cameraImg); 
     }else if(req==REQ_PHOTO_GALLERY){ 

      try { 
       Bitmap imgGallery = MediaStore.Images.Media.getBitmap(getApplicationContext().getContentResolver(), data.getData()); 
       // updateCustomImage(imgGallery); 
       cropAndSaveImage(imgGallery); 
      } catch (IOException e) { 
       // e.printStackTrace(); 
      } 
     }else if (req == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) { 
      CropImage.ActivityResult result = CropImage.getActivityResult(data); 
      Uri resultUri = result.getUri(); 
      Log.e("ImageUrl",resultUri.getPath()); 
      updateCustomImage(BitmapFactory.decodeFile(resultUri.getPath())); 
     }else if(req==REQ_APP_GALLERY){ 

      String imgPath=data.getStringExtra("ImagePath"); 
      try { 
       InputStream inputStream=getAssets().open(imgPath); 
       Bitmap image=BitmapFactory.decodeStream(inputStream); 
       cropAndSaveImage(image); 
      } catch (IOException e) { 
      } 

     } 
    } 
} 



public void cropAndSaveImage(Bitmap imgPicked){ 
    ImageLoader.getInstance().saveTempImage(imgPicked); 
    CropImage.activity(ImageLoader.getInstance().getTempImageUri()) 
      .setInitialCropWindowPaddingRatio(0) 
      .setFixAspectRatio(false) 
      .setAspectRatio(1,2) 
      .setGuidelines(CropImageView.Guidelines.ON) 
      .start(this); 
} 

Дайте мне знать, что мне не хватает?

Примечание: мы использовали эту библиотеку: Link

Благодарности

+0

Вы также должны проверить, происходит ли это на разных устройствах. Трудно сказать, просто ли это вызвано камерой низкого качества или каким-то непреднамеренным поведением кода. – Enzokie

+0

Привет! Спасибо, сэр ! Я проверил на 4-5 устройства и получил проблемы во всех устройствах, разработчик библиотеки также дал решение для него, которое я написал в первом блоке кода, но я не знаю, как его можно связать в моем коде –

+0

. Этот код создает blurry image 'Bitmap cameraImg = (Bitmap) data.getExtras(). get (" data ");', поскольку он используется только для эскизов. – Enzokie

ответ

0

Ваше оригинальное изображение, полученное с помощью камеры будет здесь-

Uri outputFileUri = Uri.fromFile(new File(context.getExternalCacheDir().getPath(), "pickImageResult.jpeg")); 

в этом файле.

Bitmap cameraImg = (Bitmap) data.getExtras(). Get ("data"); - это только миниатюра.

+0

Как я могу изменить его в своем коде? –

+0

просто сохраняйте местоположение файла, который вы указали при отправке намерения захвата изображения, а затем в onActivityResult (int req, int res, Intent data) просто используйте этот файл вместо растрового изображения из данных Intent. –