最近项目里要从网上拉取玩家的头像,可玩家的头像可以用gif图但unity不支持gif图,这样就会出现拉取失败会显示问号的图,那是Unity内转换Texture2D图失败是给的默认图。于是在网上查找解决方案,果然在http://wiki.unity3d.com/index.php/AnimatedGifDrawer上找到了;其原理是:将gif图拆分成多个单个图片,用Texture2D存放,然后逐个替换Texture2D达到动态效果。

下面是我根据用上面连接里的代码做的测试:

using UnityEngine;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
/*这里引用的System.Drawing是在C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0目录下,这个是unity安装的目录;*/
public class GifToTexture : MonoBehaviour
{public UITexture GifTexture;private List<Texture2D> _mTexture2Ds = new List<Texture2D>();private float _mTime;private float _mSpeed = 5.0f;// Use this for initializationvoid Start (){Image image = Image.FromFile(@"G:\1405069286948.gif");_mTexture2Ds = GifToTextureByCS(image);}// Update is called once per framevoid Update () {if (null != GifTexture && _mTexture2Ds.Count > 0){_mTime += Time.deltaTime;int index = (int)(_mTime*_mSpeed)%_mTexture2Ds.Count;GifTexture.mainTexture = _mTexture2Ds[index];}}List<Texture2D> GifToTextureByCS(Image image){List<Texture2D> texture2D = null;if (null != image){texture2D = new List<Texture2D>();//Debug.LogError(image.FrameDimensionsList.Length);//image.FrameDimensionsList.Length = 1;//根据指定的唯一标识创建一个提供获取图形框架维度信息的实例;FrameDimension frameDimension = new FrameDimension(image.FrameDimensionsList[0]);//获取指定维度的帧数;int framCount = image.GetFrameCount(frameDimension);for (int i = 0; i < framCount; i++){//选择由维度和索引指定的帧;image.SelectActiveFrame(frameDimension, i);var framBitmap = new Bitmap(image.Width, image.Height);//从指定的Image 创建新的Graphics,并在指定的位置使用原始物理大小绘制指定的 Image;//将当前激活帧的图形绘制到framBitmap上;System.Drawing.Graphics.FromImage(framBitmap).DrawImage(image, Point.Empty);var frameTexture2D = new Texture2D(framBitmap.Width, framBitmap.Height);for (int x = 0; x < framBitmap.Width; x++){for (int y = 0; y < framBitmap.Height; y++){//获取当前帧图片像素的颜色信息;System.Drawing.Color sourceColor = framBitmap.GetPixel(x, y);//设置Texture2D上对应像素的颜色信息;frameTexture2D.SetPixel(x, framBitmap.Height - 1 - y, new Color32(sourceColor.R, sourceColor.G, sourceColor.B, sourceColor.A));}}frameTexture2D.Apply();texture2D.Add(frameTexture2D);}}return texture2D;}
}

gif图我上传上面代码只要调好时间效果就和这个差不多了

好像可以获取到每帧图的时间间隔,这个下次去网上查查,再记录下吧。今天就到这,感谢http://wiki.unity3d.com/index.php/AnimatedGifDrawer作者代码的分享。

将Gif图转换成Unity Texture2D相关推荐

  1. Intel Realsense D435 opencv 为什么将color图转换成灰度图后,再与depth图水平堆叠,其结果一片黑色?(数据未map到0-255)

    相关代码 # -*- coding: utf-8 -*- """ @File : obstacle_detection.py @Time : 2019/12/11 10: ...

  2. 灰度图转换成彩色图和彩虹图

    把灰度图转换成彩色图和彩虹图 1. 灰度图转换成彩色图 void Gray2Color(const cv::Mat const &src, cv::Mat &dst){     dst ...

  3. html视频怎么转换成图片,如何将小视频转换成GIF动图或将GIF动图转换成视频

    现在GIF动图是越来越流行了.在过去,它是我们在Web上唯一能展示动画图片的技术.这种技术非常的有用,因为,相对于Real Video Player, Windows Media等技术,都需要特殊的浏 ...

  4. matlab将图片转成eps,【MATLAB】论文图片处理(各种数据图转换成eps格式)

    最近跟eps图片杠上了..转载一个人人网上matlab到eps图片输出格式较好的方法 随着Latex在论文编辑和排版的日益普及,越来越多的人写文章都用Latex,数据图表作为论文不可缺少的一部分,如何 ...

  5. er图转换成关系模型的例题_有关数据库系统的练习题 E-R图的关系画图转换,,急需 谢谢了...

    展开全部 你看62616964757a686964616fe58685e5aeb931333332643239下下边的例子,你的问题就可以解决了. 设某商业集团数据库中有三个实体集.一是"商 ...

  6. matlab eps格式,【MATLAB】论文图片处理(各种数据图转换成eps格式)

    最近跟eps图片杠上了..转载一个人人网上matlab到eps图片输出格式较好的方法 随着Latex在论文编辑和排版的日益普及,越来越多的人写文章都用Latex,数据图表作为论文不可缺少的一部分,如何 ...

  7. 【突破二次元壁】手把手教你用AnimeGAN将风景图转换成宫崎骏动漫风

    [突破二次元壁!]手把手教你用AnimeGAN将风景图转换成宫崎骏动漫风! 未经作者允许,本文禁止转载 0. 效果图: 1. 下载源码: 2. 下载预训练模型: 3. 准备图片: 4. 开始转换: 5 ...

  8. 如何将实体关系图转换成关系模式

      一个实体转换成一个关系模式. 首先,通过visio绘制一个与学生实体有联系的几个E-R图.如下图所示 其中矩形表示的是实体(班级,学生,课程,学习账号),椭圆表示的是属性,菱形表示的是联系(拥有, ...

  9. er图转关系模式规则_ER图转换成关系模式集的规则[图]

    ER图转换成关系模式集的规则[图] 08-18栏目:技术 TAG:关系模式 关系模式 转自己博客园文章 www.jhua.org copyright www.jhua.org A与B=1:1 在A表里 ...

最新文章

  1. LeetCode中等题之重排数字的最小值
  2. metasploit 模块和位置
  3. 百练OJ:2807:两倍
  4. UNIX再学习 -- 错误和警告
  5. IE haslayout的理解与bug修复
  6. 对某钓鱼网站的一次渗透测试
  7. CRC冗余校验举例和原理
  8. Python - Django - 中间件 process_exception
  9. al合成迪丽热巴_手机合成照很假?迪丽热巴却被P成“真”人鱼!
  10. 125w短波通信距离_125W军用自主选频短波电台
  11. 迭代器 iterator
  12. 关于java中数据类型叙述正确的是( )_关于Java中数据类型叙述正确的是:
  13. 在asp.net 中实现只允许数字输入的文本框
  14. 驱动调试助手V2.9
  15. 日期插件中中文乱码修改
  16. 宏发41F-1Z-C2接线
  17. 回忆录——一份曾经面试“网易AI产品经理”的作品
  18. MEM/MBA 写作-论说文(01)概述
  19. Word取消自动更改、自动更正
  20. airsim 安装指导(无人机、无人车视觉导航仿真平台)

热门文章

  1. 记一次使用android studio分析app闪退原因的过程
  2. 自大型人格分析,如何改变自大型性格?
  3. 多卡聚合设备助力无人机监控盲区打好疫情阻击战
  4. 物理建模钢琴-Arturia Piano V2 v2.5.0.3410 MacOSX
  5. 微信小程序 实时搜索并高亮关键字
  6. 【几维安全】共享单车安全漏洞频现 女黑客轻松破解4款共享单车app
  7. ubuntu下rsync两个服务器同步文件
  8. 几个吓尿了的公众号,前几个你不可能没听过
  9. java 中文转拼音_JAVA 将中文转化为拼音工具类
  10. UE4 LOD Screen Size