gpt4 book ai didi

java - Android 从位图到文件对象

转载 作者:太空宇宙 更新时间:2023-11-04 12:18:55 24 4
gpt4 key购买 nike

我有位图对象,我想将其转换为文件对象,为此我有以下代码:(图像是Bitmap对象)

FileOutputStream out = null;
try {
out = new FileOutputStream(Environment.getDataDirectory().toString()+"/"+"test.png");
image.compress(Bitmap.CompressFormat.PNG, 100, out);

} catch (Exception e) {
Log.d ("info", “ERROR 1");
e.printStackTrace();
} finally {
try {
if (out != null) {
out.close();
}
} catch (IOException e) {

Log.d ("info", “ERROR 2");
e.printStackTrace();
}
}

我的 list 文件是这样的:

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

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_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>

但我收到此错误:

10:57:27.573 29888-29888/com.example.alessio.myapplication W/System.err: java.io.FileNotFoundException: /data/test.png: open failed: EACCES (Permission denied)
08-20 10:57:27.573 29888-29888/com.example.alessio.myapplication W/System.err: at libcore.io.IoBridge.open(IoBridge.java:452)
08-20 10:57:27.573 29888-29888/com.example.alessio.myapplication W/System.err: at java.io.FileOutputStream.<init>(FileOutputStream.java:87)
08-20 10:57:27.573 29888-29888/com.example.alessio.myapplication W/System.err: at java.io.FileOutputStream.<init>(FileOutputStream.java:127)
08-20 10:57:27.573 29888-29888/com.example.alessio.myapplication W/System.err: at java.io.FileOutputStream.<init>(FileOutputStream.java:116)

我想将文件对象保存在内部存储中,但我不明白,因为我收到此错误。

你能帮我吗?

最佳答案

不要使用Environment.getDataDirectory()

如果“内部存储”是指 what the Android SDK refers to as internal storage ,使用 getFilesDir(),在 Context 上调用,例如您的 Activity

如果“内部存储”是指用户所说的“内部存储”,但 the Android SDK refers to as external storage ,使用 getExternalFilesDir()(也在 Context 上)或 Environment.getExternalStoragePublicDirectory()

关于java - Android 从位图到文件对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39063542/

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