如何将图像裁剪成方形 - android?

时间:2017-05-02 04:56:22

标签: android android-layout bitmap android-imageview android-bitmap

所以我的个人资料活动包含个人资料图片。现在是垂直拍摄的图像。我有水平图像视图。当我在onActivityResult()上抓取图像时,我如何“平方”图像。通过图像的平方,我的意思是,我希望每个图像的宽度都是屏幕的宽度(因为它是一个正方形,高度=图像宽度=屏幕宽度)。

在onActivityResult()中,我将我的图库和相机中的图像作为字符串路径(我可以转换为位图)。另外,当我得到图像时,我使用Glide库和网址从我的后端获取它们。

POST

所以,我需要将该图像路径转换为位图,然后以某种方式将该位图与我的屏幕宽度对齐。我不确定代码允许我这样做:

  1. 获取设备的尺寸。
  2. 将图像的宽度和高度变换为设备的宽度。
  3. 希望你们能帮忙!

    这是我的个人资料活动的样子。

    enter image description here

1 个答案:

答案 0 :(得分:2)

您可以使用此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'

将UCropActivity添加到AndroidManifest.xml

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

现在在以下代码中将图像的URI作为sourceUri传递,destinationUri将是您要放置裁剪图像的位置

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