gpt4 book ai didi

java - 拍摄照片并在 Android 的 ImageView 中以全尺寸显示

转载 作者:行者123 更新时间:2023-12-01 09:48:51 25 4
gpt4 key购买 nike

我正在 try catch 照片并将其显示在 ImageView 中。第一部分已成功完成并保存图像:

    public void takePhoto (View view) {
String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
String fileName = "myPhoto.jpg";
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
imageFile = new File(baseDir + File.separator + fileName);
Uri uri = Uri.fromFile(imageFile);
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
startActivityForResult(intent, 0);
}

但是,我无法在 ImageView 中以全尺寸显示图像:

     protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode == 0)
{
if(imageFile.exists())
{
Toast.makeText(this,"file saved!",Toast.LENGTH_SHORT).show();

ImageView myImage = (ImageView) findViewById(R.id.imageView1);
Bitmap bmImg = BitmapFactory.decodeFile("imageFile");
myImage.setImageBitmap(bmImg);
}

else
{
Toast.makeText(this,"file not saved!",Toast.LENGTH_SHORT).show();
}
}
}

XML 布局是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.example.android.trial3.MainActivity">

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Shoot"
android:onClick="takePhoto"/>

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView1"/>

</LinearLayout>

Manifest.XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.trial3">

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>

<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>

</manifest>

我收到以下错误:

BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0

感谢任何帮助。

最佳答案

查看 docsdecodeFile 方法的 pathName 参数上。

String: complete path name for the file to be decoded.

您需要将图像文件的绝对路径传递给 BitmapFactory.decodeFile()

替换以下行:

BitmapFactory.decodeFile("imageFile");

与:

BitmapFactory.decodeFile(imageFile.getAbsolutePath());

此外,您的 Manifest.xml 中似乎缺少以下权限:

android.permission.WRITE_EXTERNAL_STORAGE

所以你的 list 应该如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.trial3">

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>

<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>

</manifest>

API 级别 23+ 上,您需要在运行时请求此权限。

检查this有关如何请求运行时权限的链接。

关于java - 拍摄照片并在 Android 的 ImageView 中以全尺寸显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37749277/

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