Windows Phone 解析图片尺寸之gif

  前面介绍了PNG和JPG图片的尺寸解析,Windows Phone是直接支持这两种图片的显示的,使用Image控件。而GIF图片需要用第三方开发的控件来显示,ImageTools是开源社区CodePlex提供的,可以通过http://imagetools.codeplex.com/下载DLL以及源码。
  引用ImageTools类库后,通过以下代码可以显示GIF图片。

View Code
        //创建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个字节的头部,头部包括标识符和版本。下表列出到高度信息为止的各个字节的描述。

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

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

View Code
        //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/huizhang212/archive/2012/03/23/ImageGif.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值