1. 程式人生 > >unity 中播放GIF圖片

unity 中播放GIF圖片

using System.Drawing;
using System.Drawing.Imaging;
using UnityEngine;
using System.Collections;
using System.Collections.Generic;


public class AnimatedGifDrawer : MonoBehaviour
{
    public float speed = 5;
    private string loadingGifPath;
    private Vector2 drawPosition;
    private UnityEngine.UI.RawImage raw;
    private List<Texture2D> gifFrames = new List<Texture2D>();


    void Awake()
    {
        raw = GetComponent<UnityEngine.UI.RawImage>();


        loadingGifPath = Application.streamingAssetsPath + "/test3.gif";
        drawPosition = transform.position;
        var gifImage = System.Drawing.Image.FromFile(loadingGifPath);
        var dimension = new FrameDimension(gifImage.FrameDimensionsList[0]);
        int frameCount = gifImage.GetFrameCount(dimension);
        for (int i = 0; i < frameCount; i++)
        {
            gifImage.SelectActiveFrame(dimension, i);
            var frame = new Bitmap(gifImage.Width, gifImage.Height);
            System.Drawing.Graphics.FromImage(frame).DrawImage(gifImage, Point.Empty);
            var frameTexture = new Texture2D(frame.Width, frame.Height);
            for (int x = 0; x < frame.Width; x ++)
            { 
                for (int y = 0; y < frame.Height; y ++)
                {
                    System.Drawing.Color sourceColor = frame.GetPixel(x, y);
                    frameTexture.SetPixel(frame.Width - 1 - x, y, new Color32(sourceColor.R, sourceColor.G, sourceColor.B, sourceColor.A)); // for some reason, x is flipped  
                    //frameTexture.SetPixel(frame.Width - 1 - x+1, y+1, new Color32(sourceColor.R, sourceColor.G, sourceColor.B, sourceColor.A)); // for some reason, x is flipped  
                }
            }
            frameTexture.Apply();
            gifFrames.Add(frameTexture);
        }
    }


    public IEnumerator PlayGif()
    {
        for (int i = 0; i < gifFrames.Count; i++)
        {
            raw.texture = gifFrames[i];
            yield return 0;
        }
    }


    private void Update()
    {
        //if (Input.GetKeyDown(KeyCode.P))
        //{
        //    //播放一次  
        //    StartCoroutine(PlayGif());
        //}
        //迴圈播放  
        raw.texture = gifFrames[(int)((Time.frameCount * speed) % gifFrames.Count)];
    }

相關推薦

unity 播放GIF圖片

using System.Drawing;using System.Drawing.Imaging;using UnityEngine;using System.Collections;using System.Collections.Generic;public class AnimatedGifDrawe

unity把一個圖片切割成兩個UI圖片

unity3 mode png 鼠標 eight 圖片效果 height pri unity 1、在unity3D的Project視圖下選中需要更改的圖片,將圖片的Texture Type更改為Sprite (2D and UI),點擊Apply即可。操作如圖所示:

unity 播放視頻

shader int inpu 包含 assets vid 網絡 拉伸 上下文 Unity視頻播放有很多種實現方式,可根據要求來選擇適當的實現,這裏總結一下: 1. MovieTexture Unity標準接口,支持的播放視頻格式有.mov、.mpg、.mpeg

iOS開發技巧之:相簿GIF圖片的讀取與儲存

大家都知道iOS的系統相簿是不支援gif圖片預覽的。但是,這並不代表系統相簿不能儲存和讀取gif圖片。通過Safari長按gif圖片,選擇儲存到相簿,這時儲存到相簿裡的圖片就是gif的,雖然它不會動。 下面將介紹如何對系統相簿進行gif的讀取與儲存。 什麼是 UTI iOS系統相

Android ImageView播放gif圖片

當點選圖片的時候,gif圖片播放,當沒有點選的時候是gif的第一幀,這時是一張圖片。 參考:https://blog.csdn.net/guolin_blog/article/details/11100315 首先在values目錄下新建一個attrs.xml的檔案 &

C#與unitybase64string和圖片互轉

C#: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Drawing; using

MFC新增GIF圖片

1、下載上述文章中的軟體包,將其中的PictureEx.h,PictureEx.cpp這兩個檔案新增到工程中。 2、在對話方塊控制元件上新增Picture Control(圖片控制元件),修改其屬性:ID(TYPE:選Rectangle),不修改的話,ClassWiard不能新增CSatic控制變數,修改

Android輕鬆實現播放Gif圖片

       Android的開發框架為我們的開發提供了不少很棒的控制元件,我們在開發的時候不需要太多的編碼就能輕鬆方便的使用這些控制元件,不過有些時候這些系統自帶的控制元件並不能夠完全滿足我們的需求。這時就需要我們發揮自己的想象力來實現我們特定需求的控制元件。     

PS修改gif圖片遇到的問題

ps gif圖片 播放完了會閃一下?     檢查後發現最後多了幾個空白幀,刪除儲存就好了。 為什麼用PS做的GIF圖,預覽時候動,儲存成GIF的就不動了? 首先看你是不是設定了多個幀,其次要看你是不是每一幀都顯示的一個不同的圖層,如果這都沒有問題播放動畫看看是有是動

ios播放gif動畫

轉自:http://blog.csdn.net/lovenjoe/article/details/7487142 iPhone SDK提供了多種動畫手段,UIView、UIImageView和CALayer都支援動畫。但如何處理常見的gif動畫呢?UIWebView提供了

[Swift通天遁地]八、媒體與動畫-(10)在項目播放GIF動畫

顏色 dem 使用 hat uic dds override github ios 本文將演示使用第三方類庫播放GIF動畫。 首先確保已經安裝了所需的第三方類庫。雙擊查看安裝配置文件【Podfile】 1 platform :ios, ‘12.0‘ 2 use

LaTeX 插入GIF圖片

參見博文:liam.page 和 voidcn 前提條件 安裝 ImageMagick 軟體 (因為要把 gif 圖片轉換成 png 序列),使用它的命令列工具 convert.exe 命令列下把 gif 轉換成 png 序列,實際,例如 convert latex_demo.gif -coalesce o

關於UnityUGUI圖片Image實現仿視頻播放窗口的四角縮放功能

重置 assert clas () strong unity 操作 寬度 腳本 應用方法:將下面腳本掛載在需要實現四角縮放功能的UI圖片上即可. 自定義拖拽精度(與邊界距離多少內觸發)m_validityWidth. 1 /********************

關於UnityNGUI圖片精靈響應鼠標的方法

unity see hover 9.png pan 事件 實戰 方法 技術分享 我在Unity裏做NGUI的時候發現一個問題。 在Unity2D場景當中,一個精靈圖片只要加上了Box Collider或者Box Collider2D,就可以相應OnMouseEnter和On

unity實現三個Logo圖片進行3秒鐘的若隱若現後互相切換Logo圖片

date += srp val logs ima 精靈 texture 透明 private List<Sprite> storeTexture; public void Start() { storeTextu

linux下,將一個目錄圖片文件合成為gif圖片

linux span depth 合成 linux下 bsp col spa 目錄 # {0} 為文件所在目錄位置 # {1} 為gif圖片位置 convert -delay 30 -depth 8 -layers optimize -quality 80 -loop 0

AndroidGif圖片的顯示

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Unity視訊的播放

建立步驟 1:建立Video Player 在GameObject中video中 Source有兩種1:video Clip是要播放下載好的視屏 2: URL是要放入在網上找到的視屏連結 一般URL中都是放入Mp4格式,其他的請自行實驗。 1:如果想直接播

Android自定義Movie播放網路gif圖片

之前看到過一些帖子播放gif圖片的,大概看過兩種版本,一種是使用把gif解碼,分為一幀一幀的播放,另一種就是直接播放gif圖片。可以使用Movie類來播放,一種是使用框架,一個是android-gifview,另一個是android-gif-drawable,前者載入小的gif圖片沒問題

unity版本問題之視訊播放

1.MovieTexture問題 當我想打包成移動端的時候出現了這樣的bug提示: The type or namespace name `MovieTexture' could not be found. Are you missing a using directive or