在学习连接数据库的时候,我在获取数据库里面的图片的时候总是获取到一些问号,当时在百度上面看见的是可能是图片太大或者是图片格式有问题等等,然后在知乎上面看见了一个文章,附上链接(Unity加载远程图片 - 知乎)
这是我之前的代码(看到的文章在这Unity加载远程图片 - 知乎)
public Sprite LoadImage(string imageLoad)
{
if (imageLoad == null)
return null;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(imageLoad + DateTime.Now.ToString());
request.Method = "GET";
request.ContentType = "image/png";
request.Timeout = 3000;
WebResponse response = request.GetResponse();
byte[] bytes = new byte[response.ContentLength];
response.GetResponseStream().Read(bytes, 0, (int)response.ContentLength);
response.Close();
Texture2D texture2d = new Texture2D(100, 100);
Sprite sprite = null;
if (texture2d.LoadImage(bytes))
{
sprite = Sprite.Create(texture2d, new Rect(0, 0, texture2d.width, texture2d.height), new Vector2(0.5f, 0.5f));
}
if (sprite != null)
{
return sprite;
}
else
{
return null;
}
}看到这个文章之后我就用了他的代码(发表这个文章的时候没有征求作者的链接,但是附上了作者文章的链接,在知乎上面我有申请转载,应该不会出什么大问题吧)
(看到的文章在这Unity加载远程图片 - 知乎 )
public IEnumerator textureTest(string imageLoad, UnityEngine.UI.RawImage raw)
{
UnityWebRequest request = UnityWebRequestTexture.GetTexture(imageLoad);
yield return request.SendWebRequest();
if (request.result == UnityWebRequest.Result.ConnectionError)
{
Debug.Log(request.error);
}
Texture2D tex2d = ((DownloadHandlerTexture)request.downloadHandler).texture;
if (tex2d == null)
{
raw.texture = tex;
}
else
{
raw.texture = tex2d;
}
StopCoroutine("textureTest");
}顺带提一句,因为该作者有提到说是因为Sprite.Create太耗资源,所以之后我都是只加载texture,要是真的需要Sprite.Create来转换sprite也是单个转换不会一窝蜂的转
(看到的文章在这Unity加载远程图片 - 知乎 )
版权声明:本文为Yellow_juanjuan原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。