2016-07-08 20 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); 

と私の開発者以下のようなコードを統合するためのソリューションが自分のアプリケーションに

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); 
} 
以下のようなよくする方法として

@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); 
          } 
         } 

を以下のようなコードを統合している私を与えています

私には何が足りないのか教えてください。

注:私たちは、このライブラリを使用していますLink

おかげ

+0

これが異なるデバイスで発生するかどうかも確認する必要があります。それはちょうど低品質のカメラや意図していないコードの動作の何らかの原因であるかどうかを判断するのは難しいです。 – Enzokie

+0

こんにちは!ありがとうございます !私は4-5デバイスをチェックして、すべてのデバイスで問題を取得しています。ライブラリ開発者は、最初のコードブロックで書いた解決策も与えましたが、私はどのようにコードに結びつけることができないのですか? –

+0

Bitmap cameraImg =(Bitmap)data.getExtras()。get( "data"); 'これはサムネイルのみに使用されるためです。 – Enzokie

答えて

0

カメラを使って撮影したあなたの元の画像は、このファイルにhere-

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

になります。

ビットマップcameraImg =(ビットマップ)data.getExtras()。get( "data");は返されたサムネイルだけです。

+0

コードでどのように変更できますか? –

+0

あなたが提供したファイルの場所を保持するだけで、キャプチャイメージを送信してから、onActivityResult(int req、int res、Intentデータ)で、Intentデータからビットマップの代わりにそのファイルを使用します。 –

関連する問題