Files
ZHGD_Web/Assets/Script/Controller/RawImageController.cs
2025-07-15 18:33:21 +08:00

112 lines
2.7 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
public class RawImageController : MonoBehaviour
{
public string Name;
public List<Texture2D> Images = new List<Texture2D>();
private string ImagePath = Application.streamingAssetsPath + "\\Data\\测试数据\\智慧党建\\图片\\";
private int CurrentIndex = 0;
private RawImage RawImage;
private string path;
void Start()
{
path = ImagePath + Name;
RawImage = transform.GetChild(0).GetComponent<RawImage>();
transform.Find("L_Button").GetComponent<Button>().onClick.AddListener(() =>
{
ImageController(-1);
});
transform.Find("R_Button").GetComponent<Button>().onClick.AddListener(() =>
{
ImageController(1);
});
ChartDataUpdateController.Inst.ChartUpdateAction += ImageDataUpate;
ImageDataUpate();
}
private void ImageController(int index)
{
CurrentIndex += index;
int i = CurrentIndex % Images.Count;
if (i < 0)
{
ImageUpdate(Images.Count + i);
}
else if (i > 0)
{
ImageUpdate(i);
}
else
{
ImageUpdate(0);
}
}
private void ImageDataUpate()
{
Images.Clear();
string[] files = Directory.GetFiles(path, "*", SearchOption.AllDirectories);
foreach (string file in files)
{
if (file.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase) || file.EndsWith(".png", StringComparison.OrdinalIgnoreCase))
{
// Images.Add(GetTextureByString(SetImageToString(file)));
WebRequsetTool.Inst.GetTexture(file, (texture) =>
{
Images.Add(texture);
});
}
}
ImageController(0);
}
private void ImageUpdate(int i)
{
RawImage.texture = Images[i];
}
/// <summary>
/// 将图片转化为字符串
/// </summary>
private string SetImageToString(string imgPath)
{
FileStream fs = new FileStream(imgPath, FileMode.Open);
byte[] imgByte = new byte[fs.Length];
fs.Read(imgByte, 0, imgByte.Length);
fs.Close();
return Convert.ToBase64String(imgByte);
}
/// <summary>
/// 将字符串转换为纹理
/// </summary>
private Texture2D GetTextureByString(string textureStr)
{
Texture2D tex = new Texture2D(1, 1);
byte[] arr = Convert.FromBase64String(textureStr);
tex.LoadImage(arr);
tex.Apply();
return tex;
}
void Update()
{
}
}