所以我的个人资料活动包含个人资料图片。现在是垂直拍摄的图像。我有水平图像视图。当我在onActivityResult()上抓取图像时,我如何“平方”图像。通过图像的平方,我的意思是,我希望每个图像的宽度都是屏幕的宽度(因为它是一个正方形,高度=图像宽度=屏幕宽度)。
在onActivityResult()中,我将我的图库和相机中的图像作为字符串路径(我可以转换为位图)。另外,当我得到图像时,我使用Glide库和网址从我的后端获取它们。
POST
所以,我需要将该图像路径转换为位图,然后以某种方式将该位图与我的屏幕宽度对齐。我不确定代码允许我这样做:
答案 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);
}
}