gpt4 book ai didi

java - 使用 URI 在 Activity 中显示图像

转载 作者:行者123 更新时间:2023-11-30 11:56:34 25 4
gpt4 key购买 nike

我正在编写一个使用 Intent(MediaStore.ACTION_IMAGE_CAPTURE) 进行捕获和成像的应用程序。在捕获图像的过程中,我记下了图像 URI 的输出。完成相机 Activity 后,我希望使用此特定 URI 显示图像。

我用来抓图的方法是:

    private void saveFullImage() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File file = new File(Environment.getExternalStorageDirectory(),
"test.jpg");
outputFileUri = Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, TAKE_PICTURE);
}

这是从 Reto Meier 的书 Professional Android 2 Application Development 中提取的方法。

该方法工作正常,我假设我刚刚拍摄的图片的 URI 存储在 outputFileUri 变量中。那么此时的代码就是我要显示图片的地方:

    @Override
protected void onActivityResult(int requestCode,
int resultCode, Intent data) {
if (requestCode == TAKE_PICTURE) {

//I want to display the picture I just took here
//using the URI

}
}

我不知道该怎么做。

我尝试使用方法 setImageURI(outputFileUri) 创建一个新的布局对象和一个新的 ImageView 对象。我的主布局 (xml) 没有 ImageView 对象。但是即使我将 contentView 设置为附加了 ImageView 的新布局,它也不会显示任何内容。我尝试从 URI 创建一个 Bitmap 对象并将其设置为 ImageView,但出现意外错误并强制退出。

我在这里看过例子here它从 URI 创建位图,但不显示它?

我的问题是如何在正在运行的 Activity 中显示图像?我是否需要获取文件路径(如 this )才能显示它?如果我从 URI 制作位图,我该如何显示位图?

我可能只是遗漏了一些简单的东西......所以我们将不胜感激任何帮助!

还有一个额外的思考问题:如果我要拍多张照片,你会推荐我改用 SimpleCursorAdapter 吗?

谢谢!

最佳答案

这个问题很久以前了。我希望这个答案能帮助有同样问题的人。我刚刚测试了这段代码,它工作正常。

java代码:

package com.mywebsite.mohammad.openfiledialog;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
ImageView ImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView = (ImageView) findViewById(R.id.imageView);
Intent intent = new Intent()
.setType("image/*")
.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select a file"), 123);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==123 && resultCode==RESULT_OK) {
Uri selectedfile = data.getData(); //The uri with the location of the file
ImageView.setImageURI(selectedfile);
}
}
}

xml代码:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

关于java - 使用 URI 在 Activity 中显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4362760/

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