-1

私はプロフィール画像でプロフィール活動をしています。今度は垂直に撮影された画像。私は水平な画像を見ることができます。私は画像を取得するときにどのように私は "正方形"の画像をonActivityResult()。画像を2乗すると、各画像の幅を画面の幅にしたい(そしてその正方形、高さ=画像の幅=画面の幅なので)。正方形に画像をトリミングする方法 - アンドロイド?

onActivityResult()では、ギャラリーとカメラの画像を文字列パス(ビットマップに変換できます)として取得します。また、画像を取得すると、GlideライブラリとURLを使用してバックエンドから取得できます。

Glide.with(context).load("www.mybackendToImagePath").centerCrop().into(newImageView);

だから、私はビットマップにその画像パスに変換して、何とか私の画面の幅とそのビットマップを二乗する必要があります。私はどのコードが私に許されているのか分かりません:

  1. デバイスの寸法を取得します。
  2. トランスフォームは、画像の幅と高さをデバイスの幅に合わせます。

皆さん、お手伝い願います。

Heres私のプロフィールアクティビティはどのように見えますか?

enter image description here

答えて

1

あなたがカメラやギャラリーから入手クロップ画像にこのhttps://github.com/Yalantis/uCropライブラリを使用することができます。

allprojects { 
repositories { 
    jcenter() 
    maven { url "https://jitpack.io" } 
} 
} 

は依存関係

compile 'com.github.yalantis:ucrop:2.2.1' 

または

compile 'com.github.yalantis:ucrop:2.2.1-native' 

<activity 
    android:name="com.yalantis.ucrop.UCropActivity" 
    android:screenOrientation="portrait" 
    android:theme="@style/Theme.AppCompat.Light.NoActionBar"/> 

今渡すあなたのAndroidManifest.xmlにUCropActivityを追加URIの追加ローカルライブラリプロジェクトとしてライブラリを含めますあなたのイメージを次のコードとdestinationUriでsourceUriあなたは

UCrop.of(sourceUri, destinationUri) 
.withAspectRatio(1, 1)//1, 1 is the ratio b/w width and height of image i.e. square you can pass any ratio here 
.withMaxResultSize(maxWidth, maxHeight) 
.start(context); 

オーバーライドonActivityResult方法あなたのトリミングされた画像を配置したい場所を可能とuCrop結果を処理します。

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK && requestCode == UCrop.REQUEST_CROP) { 
     final Uri resultUri = UCrop.getOutput(data); 
    } else if (resultCode == UCrop.RESULT_ERROR) { 
     final Throwable cropError = UCrop.getError(data); 
    } 
} 
+0

ライブラリを使用せずに行う方法はありますか? – TheQ

+0

作物の意図についてはhttp://stackoverflow.com/a/15239086/1798737を参照してください。 –

関連する問題