You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中使用Glide从同一局域网内的PC加载图片是否可行?

用Glide加载局域网PC上的图片完全可行!

当然可以啦,这是Glide非常常见的使用场景,只要你的PC上的图片能通过网络被你的Android设备访问到就行。我给你分享两种最实用的实现方式:

方法一:通过HTTP服务器加载(推荐,无额外依赖)

这是最简单的方式,你只需要在PC上快速搭建一个临时HTTP服务器,就能让Glide像加载普通网络图片一样加载局域网内的图片。

步骤1:在PC上启动HTTP服务器

  • 如果你的PC装了Python,打开命令提示符/终端,进入存放图片的文件夹,执行:
    # Python 3
    python -m http.server 8000
    # Python 2
    python -m SimpleHTTPServer 8000
    
    这条命令会在8000端口启动一个简易HTTP服务器,当前文件夹就是服务器的根目录。
  • 如果你不想用Python,也可以用其他工具,比如Node.js的http-server,或者专门的HTTP服务器软件(如XAMPP)。

步骤2:获取PC的局域网IP

在PC上查看自己的局域网IP(比如Windows用ipconfig,Mac/Linux用ifconfig或ip addr),假设你的PC IP是192.168.1.105。

步骤3:用Glide加载图片

假设你的图片在服务器根目录叫demo.jpg,那么图片的URL就是http://192.168.1.105:8000/demo.jpg,直接用Glide加载即可:

Kotlin示例

Glide.with(this)
    .load("http://192.168.1.105:8000/demo.jpg")
    .placeholder(R.drawable.placeholder) // 可选:加载时占位图
    .error(R.drawable.error) // 可选:加载失败占位图
    .into(imageView)

Java示例

Glide.with(this)
    .load("http://192.168.1.105:8000/demo.jpg")
    .placeholder(R.drawable.placeholder)
    .error(R.drawable.error)
    .into(imageView);

注意事项

  • 确保你的Android设备和PC在同一局域网(连同一个WiFi或有线网络)。
  • 关闭PC上的防火墙,或者开放8000端口的访问权限,否则设备可能连不上服务器。

方法二:通过SMB文件共享加载(适合共享文件夹场景)

如果你的PC用的是Windows共享文件夹或者NAS的SMB共享,Glide默认不支持SMB协议,但可以通过第三方库扩展实现。

步骤1:添加依赖

在你的项目build.gradle(Module级别)中添加以下依赖:

implementation 'com.github.bumptech.glide:glide:4.15.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.15.1'
implementation 'eu.agno3.jcifs:jcifs-ng:2.1.32' // SMB客户端库

步骤2:自定义SMB图片加载逻辑

你需要通过SMB客户端获取图片的输入流,再交给Glide加载:

// Kotlin示例
CoroutineScope(Dispatchers.IO).launch {
    val smbUrl = "smb://[PC用户名]:[PC密码]@192.168.1.105/共享文件夹名/demo.jpg"
    // 如果共享不需要密码,用匿名凭证
    val context = SmbContextBuilder.builder().withAnonymousCredentials().build()
    // 如果需要密码,替换成以下代码:
    // val credentials = NtlmPasswordAuthentication("[域]", "[用户名]", "[密码]")
    // val context = SmbContextBuilder.builder().withCredentials(credentials).build()
    
    val file = SmbFile(smbUrl, context)
    val inputStream = file.inputStream
    
    withContext(Dispatchers.Main) {
        Glide.with(this@MainActivity)
            .load(inputStream)
            .into(imageView)
    }
}

注意事项

  • SMB方式需要处理权限、密码等问题,逻辑相对复杂,推荐只有在必须用共享文件夹时才使用。
  • 注意网络请求要放在子线程,不能在主线程执行SMB文件操作。

内容的提问来源于stack exchange,提问作者waleed noseir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 18:29:06