如何使用滑行从本地存储中加载图像

发布于 2025-01-19 09:17:11 字数 1837 浏览 2 评论 0原文

我想从图片目录加载一张图像到 imageView 。使用此代码我总是收到错误,但是文件存在。

这是非常原始的例子。更大的项目需要它,但我想让它尽可能简单。

build.gradle(模块 - 代码的唯一重要部分):

android {
    compileSdk 32

    defaultConfig {
        minSdk 28
        targetSdk 32
        versionCode 1

dependencies {
 implementation "com.github.bumptech.glide:glide:4.13.0"
}

glide 4.13.0 应该是最新版本

AndroidActivity.xml(仅重要部分):

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

    <application
        android:requestLegacyExternalStorage="true"
        android:usesCleartextTraffic="true"

MainActivity.kt

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), 999) // to get permission read from external storage
  
        val image1: ImageView = findViewById(R.id.imageView)
        val file = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString()).list()?.get(0)

        Glide.with(this)
            .asBitmap()
            .load(file)
            .into(image1)
}

当我调试代码时,我看到该变量 file存在且其名称为 IMG_20220317_085955.jpg

错误消息:

java.io.FileNotFoundException(open failed: ENOENT (No such file or directory))
     call GlideException#logRootCauses(String) for more detail
          Cause (1 of 1): class java.io.FileNotFoundException: open failed: ENOENT (No such file or directory)
I/Glide: Root cause (1 of 3)
    java.io.FileNotFoundException: /IMG_20220317_085955.jpg: open failed: ENOENT (No such file or directory)
        at libcore.io.IoBridge.open(IoBridge.java:492)

I would like to load to imageView one image from pictures directory. With this code I alway get error, however the file exist.

This is very primitive example. It is needed for bigger project, but I want to make it as simple as possible.

build.gradle (module - only important part of code):

android {
    compileSdk 32

    defaultConfig {
        minSdk 28
        targetSdk 32
        versionCode 1

dependencies {
 implementation "com.github.bumptech.glide:glide:4.13.0"
}

glide 4.13.0 should be lattest version

AndroidActivity.xml(only important part):

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

    <application
        android:requestLegacyExternalStorage="true"
        android:usesCleartextTraffic="true"

MainActivity.kt

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), 999) // to get permission read from external storage
  
        val image1: ImageView = findViewById(R.id.imageView)
        val file = File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString()).list()?.get(0)

        Glide.with(this)
            .asBitmap()
            .load(file)
            .into(image1)
}

When I debug my code I see that variable file exists and its name is IMG_20220317_085955.jpg

Error message:

java.io.FileNotFoundException(open failed: ENOENT (No such file or directory))
     call GlideException#logRootCauses(String) for more detail
          Cause (1 of 1): class java.io.FileNotFoundException: open failed: ENOENT (No such file or directory)
I/Glide: Root cause (1 of 3)
    java.io.FileNotFoundException: /IMG_20220317_085955.jpg: open failed: ENOENT (No such file or directory)
        at libcore.io.IoBridge.open(IoBridge.java:492)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尝蛊 2025-01-26 09:17:11

要获取完整路径,我使用

 val file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString() + "/" + Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).list()
            ?.get(0)
            .toString()

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) 将生成路径 Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).list()?.get(0) get第一张图片(如果存在)

To get full path I used

 val file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString() + "/" + Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).list()
            ?.get(0)
            .toString()

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) will generate path Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).list()?.get(0) get first image (if exists)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文