我正在开发一个应用程序,我必须从相机和图库中获取图像,但是当我尝试裁剪图像时,我会在图像中获得一些深色背景。我正在使用此代码进行裁剪图像 -
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 0);
intent.putExtra("aspectY", 0);
intent.putExtra("outputX", 200);
intent.putExtra("outputY", 150);
它工作正常,但问题是图像背后的黑暗背景。
答案 0 :(得分:2)
// aspectX aspectY
intent.putExtra("aspectX", 2);
intent.putExtra("aspectY", 3);
// outputX,outputY
intent.putExtra("outputX", 800);
intent.putExtra("outputY", 1200);
intent.putExtra("scale", true);
intent.putExtra("scaleUpIfNeeded", true);
答案 1 :(得分:1)
我像这样制作了ImageView,它解决了我的问题: -
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="5" >
<ImageView
android:id="@+id/selectedpic"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|center_vertical"
android:layout_marginTop="30dp"
android:scaleType="centerCrop"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:background="@android:color/transparent"
android:src="@drawable/frame_d" />
</LinearLayout>
重要标签是
android:background="@android:color/transparent"
和andandroid:scaleType="centerCrop"
我试过intent.putExtra("scale", true);
但是如果我们根据以前的尺寸缩放图像的一小部分,会降低图像质量。所以我不建议使用它。
答案 2 :(得分:0)
这里的问题似乎是图像的新尺寸大于来源,当你裁剪时,Android需要用某种东西“填充”新尺寸。
您可以有一些逻辑来查看在裁剪之前是否需要裁剪图像。
或者,您可以查看ImageCache Actions库。