2016-07-08 106 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

此代碼生成模糊圖像'位圖cameraImg =(位圖)data.getExtras()。get(「data」);',因爲它僅用於縮略圖。 – Enzokie

回答

0

使用相機拍攝你的原始圖像將這裏 -

Uri outputFileUri = Uri.fromFile(new File(context.getExternalCacheDir().getPath(), "pickImageResult.jpeg")); 
在這個文件

the Bitmap cameraImg =(Bitmap)data.getExtras()。get(「data」);只是返回的縮略圖。

+0

如何在我的代碼中更改它? –

+0

只是在發送捕獲圖像意圖時保留您提供的文件的位置,然後在onActivityResult(int req,int res,Intent data)中使用該文件而不是Intent數據中的位圖。 –

相關問題