windows phone 使用GIF图片的方法(获取宽度与高度)

 WP7 是支持其显示的,只需使用Image控件可以显示PNG与JPG,但是GIF不行 需要用到开源控件:

你可以再http://imagetools.codeplex.com/下载DLL以及源码。在引用ImageTools类库后,通过以下代码可以显示GIF图片。

//创建gif控件

        AnimatedImage gifImage = new AnimatedImage();

        Decoders.AddDecoder<GifDecoder>();

        //根据图片字节流加载图片

        ExtendedImage extendedImg = new ExtendedImage();

        GifDecoder dc = new GifDecoder();

        dc.Decode(extendedImg, stream);

        gifImage.Source = extendedImg;

GIF图片的文件格式相对比较简单,其中宽度和高度信息存放在逻辑视屏描述块的前4个字节,而逻辑视屏描述块是GIF图片的第二块区域,第一个区域为6个字节的头部,头部包括标识符和版本。下表列出到高度信息为止的各个字节的描述。

名称 字节 说明
头部    
标识符 3 GIF  47 49 46
版本 3 87a(89a) 38 39|37 61
逻辑视屏描述块    
宽度 2  
高度 2  

  

 

 

 

 

 

 

根据上面的格式很容易获取图片的高度和宽度信息,具体代码如下。

//gif图片信息域(47 49 46 38 39|37 61) GIF89(7)a,共6字节

        //根据6字节判断是否为gif图片

        byte[] header = new byte[6];

        stream.Read(header, 0, 6);

        if (!(header[0] == 0x47 &&       // G

                header[1] == 0x49 &&    // I

                header[2] == 0x46 &&    // F

                header[3] == 0x38 &&    // 8

                (header[4] == 0x39 ||   // 9

                header[4] == 0x37) &&   // 7

                header[5] == 0x61))     // a

        {

            //不是GIF图片,退出

            return;

        }



        //读取宽度,高度 各2字节

        byte[] buffer = new byte[4];

        stream.Read(buffer, 0, buffer.Length);



        width_ = BitConverter.ToInt16(buffer, 0);

        height_ = BitConverter.ToInt16(buffer, 2);

 

      

原文地址:https://www.cnblogs.com/zhibin/p/2553321.html