2017-03-04 5 views
0

ギャラリーから画像を選択して画像を選択するアンドロイドでコードを実装しましたが、その画像は画像に見えますが切り抜かれた画像は非常にぼやけて、そのまま切り抜いた画像を表示する方法アンドロイドで画像を選択して切り抜いたときの画質の変化(ぼかし)

ここで

私のコードです:

ImageSelecter.java

public class ImageSelecter extends Activity { 

private final int GALLERY_ACTIVITY_CODE=200; 
private final int RESULT_CROP = 400; 
String picturePath; 
ImageView image_capture1; 
Button btn_choose; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    btn_choose=(Button)findViewById(R.id.choose_btn); 
    image_capture1=(ImageView)findViewById(R.id.img); 
    btn_choose.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      //Start Activity To Select Image From Gallery 
      Intent gallery_Intent = new Intent(getApplicationContext(), GalleryUtil.class); 
      startActivityForResult(gallery_Intent, GALLERY_ACTIVITY_CODE); 
      } 
     }); 

     } 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == GALLERY_ACTIVITY_CODE) { 
     if(resultCode == Activity.RESULT_OK){ 
      picturePath = data.getStringExtra("picturePath"); 
      //perform Crop on the Image Selected from Gallery 
      performCrop(picturePath); 
     } 
    } 

    if (requestCode == RESULT_CROP) { 
     if(resultCode == Activity.RESULT_OK){ 
      Bundle extras = data.getExtras(); 
      Bitmap selectedBitmap = extras.getParcelable("data"); 

      // Set The Bitmap Data To ImageView 
      image_capture1.setImageBitmap(selectedBitmap); 
       image_capture1.setScaleType(ImageView.ScaleType.FIT_XY); 
     } 
    } 
} 

private void performCrop(String picUri) { 
    try { 
     //Start Crop Activity 

     Intent cropIntent = new Intent("com.android.camera.action.CROP"); 
     // indicate image type and Uri 
     File f = new File(picUri); 
     Uri contentUri = Uri.fromFile(f); 

     cropIntent.setDataAndType(contentUri, "image/*"); 
     // set crop properties 
     cropIntent.putExtra("crop", "true"); 
     // indicate aspect of desired crop 
     cropIntent.putExtra("aspectX", 1); 
     cropIntent.putExtra("aspectY", 1); 
     // indicate output X and Y 
     cropIntent.putExtra("outputX", 280); 
     cropIntent.putExtra("outputY", 280); 

     // retrieve data on return 
     cropIntent.putExtra("return-data", true); 
     // start the activity - we handle returning in onActivityResult 
     startActivityForResult(cropIntent, RESULT_CROP); 
    } 
    // respond to users whose devices do not support the crop action 
    catch (ActivityNotFoundException anfe) { 
     // display an error message 
     String errorMessage = "your device doesn't support the crop action!"; 
     Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT); 
     toast.show(); 
    } 
} 
} 

そして

GalleryUは、次のようにギャラリークラスを表示するためのクラスですtil.java

public class GalleryUtil extends Activity { 
    private final static int RESULT_SELECT_IMAGE = 100; 
    public static final int MEDIA_TYPE_IMAGE = 1; 
    private static final String TAG = "GalleryUtil"; 

    String mCurrentPhotoPath; 
    File photoFile = null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    try{ 
     //Pick Image From Gallery 
     Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
     startActivityForResult(i, RESULT_SELECT_IMAGE); 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 

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

    switch(requestCode){ 
     case RESULT_SELECT_IMAGE: 

      if (resultCode == Activity.RESULT_OK && data != null && data.getData() != null) { 
       try{ 
        Uri selectedImage = data.getData(); 
        String[] filePathColumn = {MediaStore.Images.Media.DATA }; 
        Cursor cursor = getContentResolver().query(selectedImage, 
          filePathColumn, null, null, null); 
        cursor.moveToFirst(); 
        int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
        String picturePath = cursor.getString(columnIndex); 
        cursor.close(); 

        //return Image Path to the Main Activity 
        Intent returnFromGalleryIntent = new Intent(); 
        returnFromGalleryIntent.putExtra("picturePath",picturePath); 
        setResult(RESULT_OK,returnFromGalleryIntent); 
        finish(); 
       }catch(Exception e){ 
        e.printStackTrace(); 
        Intent returnFromGalleryIntent = new Intent(); 
        setResult(RESULT_CANCELED, returnFromGalleryIntent); 
        finish(); 
       } 
      }else{ 
       Log.i(TAG,"RESULT_CANCELED"); 
       Intent returnFromGalleryIntent = new Intent(); 
       setResult(RESULT_CANCELED, returnFromGalleryIntent); 
       finish(); 
      } 
      break; 
    } 
} 
    } 

トリミングした画像をそのまま表示するようにしてください。

答えて

0

ImageView.ScaleType.FIT_XYをImageView.ScaleType.CENTER_INSIDEに変更してください。

またはFIT_CENTER/CENTER_CROP/CENTERのような他の適切なScaleType。

関連する問題