Unity从网络/本地异步获取图片(微信头像)

最近在写获取微信头像的代码,  通过微信开放平台SDK授权登录后, 个人信息请求中会返回一个微信头像的url, 类似于这种形式:

"headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
注意,最后的/0代表大头像 /46代表小头像


如何读取这个头像, 首先想到的是协程, 然后通过WWW类,用Http请求来获取它; 

当然之后还会考虑去获取所有好友的微信头像, 这就需要将很多图片的URL下载下来保存在本地, 所以百度学习了一下unity本地存取图片的方法.

主要用到了c#的gethashcode()来区分图片,  下载图片后将Texture压缩成bytes存在本地,  www类加协程异步读取本地图片。



using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.IO;

public class AsyncImageDownload : MonoBehaviour
{
    public Sprite myWXPic;

    private static AsyncImageDownload _instance = null;
    public static AsyncImageDownload GetInstance() { return Instance; }
    public static AsyncImageDownload Instance
    {
        get
        {
            if (_instance == null)
            {
                GameObject obj = new GameObject("AsyncImageDownload");
                _instance = obj.AddComponent<AsyncIma
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity 中,可以使用 `Application.persistentDataPath` 属性来获取可持久化数据路径,然后使用 UnityWebRequest 或 WWW 类来下载网络图片,下载完成后将图片保存到本地文件系统中。 下面是一个保存图片的示例代码: ```csharp string savePath = Application.persistentDataPath + "/images"; // 创建目录 if (!Directory.Exists(savePath)) { Directory.CreateDirectory(savePath); } string url = "网络图片地址"; UnityWebRequest www = UnityWebRequestTexture.GetTexture(url); yield return www.SendWebRequest(); if (www.result != UnityWebRequest.Result.Success) { Debug.LogError("图片下载失败: " + www.error); } else { Texture2D texture = ((DownloadHandlerTexture)www.downloadHandler).texture; byte[] data = texture.EncodeToJPG(); // 将纹理转换为 JPG 格式的字节数组 string filePath = savePath + "/image.jpg"; File.WriteAllBytes(filePath, data); Debug.Log("图片保存成功: " + filePath); } ``` 在这个示例中,我们首先使用 `Directory.CreateDirectory()` 方法创建了一个名为 `images` 的目录,然后使用 `UnityWebRequest` 类下载了网络图片,并将其保存到了本地目录中。 请注意,由于微信小游戏的沙箱机制,我们只能在可持久化数据路径下进行文件操作,因此需要使用 `Application.persistentDataPath` 属性获取可持久化数据路径。 另外,由于微信小游戏不支持 System.IO 命名空间中的文件操作方法,我们需要使用 `File.WriteAllBytes()` 方法来将字节数组写入到文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值