gpt4 book ai didi

android - 图像裁剪损失了很多质量

转载 作者:太空狗 更新时间:2023-10-29 16:41:21 25 4
gpt4 key购买 nike

我正在从相机捕捉图像,然后将其保存在 sqlite 数据库中。

之后我允许用户裁剪它。整个过程后质量非常非常差。

我正在 Nexus7 上测试它,我知道它的前置摄像头很差,但在裁剪应用程序打开后,图片非常小。裁剪 Activity 占用屏幕的 1/5,我不知道为什么。

这会发生什么 onActivityResult(捕获已拍照片)

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
String path = Images.Media.insertImage(getActivity().getContentResolver(), bitmap, "Title", null);
Uri imageUri = Uri.parse(path);
if (!doCrop(imageUri)) saveNewAvatar(bitmap);
}
}

这里是 doCrop(Uri uri) 方法:

private void doCrop(final Uri imageUri) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setType("image/*");

List<ResolveInfo> list = getActivity().getPackageManager().queryIntentActivities( intent, 0 );

int size = list.size();

intent.setData(imageUri);

intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("return-data", true);

if (size == 1) {
Intent i = new Intent(intent);
ResolveInfo res = list.get(0);

i.setComponent( new ComponentName(res.activityInfo.packageName, res.activityInfo.name));

startActivityForResult(i, CROP);
}
}

整个过程图非常非常小之后。

编辑:做了一些研究并遵循了 this thread 中的代码

最后是这样的:

最佳答案

你的代码有很多错误(比如:也许可行,但这不是你在 Android 上做这些事情的方式),但问题的根源在于你阅读了图像来自 extras 中的 data 键。 extra中的版本只是一个缩影,质量很差。

您需要做的是更改调用相机的方式。这有点违反直觉,但您不会获得从相机拍摄的照片的 url,而是恰恰相反:将 url 传递给相机,它会尝试将照片放在那里。

该 url 可能指向 SD 卡或您拥有的 ContentProvider

关于android - 图像裁剪损失了很多质量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17253712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com