编程实现QQ表情文件CFC格式

2016-01-29 12:29 48 1 收藏

编程实现QQ表情文件CFC格式,编程实现QQ表情文件CFC格式

【 tulaoshi.com - ASP.NET 】

 

背景:最近闲来无事,也应论坛某会员要求,想做个QQ表情下载的站点。本来事情是很简单的,写个小小的CRUD也就可以了,但嘻哈呵嘿既然是个.Net程序员,当然要使用.Net来实现了。今天我们就用.Net来实现CFC ( custom face cab? ) 的表情格式的打包功能。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

要做到这个功能,我们必须先了解这个格式,首先Google一下。我们找到了这一篇来自清华大学的文章:FC文件格式详解

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

从这篇文章里我们得知了CFC的文件格式大概如下:

 

一个块有15个字段,如下

md5的字符串形式长度,4个字节
快捷键长度,4字节
表情名称长度,4字节
表情文件名长度,4字节
表情文件长度,4字节
微缩图文件名长度,4字节
微缩文件长度,4字节
表情文件帧数,4字节
图片md5的字符串形式
快捷键
表情名称
表情文件名
微缩图文件名
表情文件内容
微缩图内容
知道了格式就好办了,我们按步就班定义一个结构(struct)
 1    Struct#region Struct
 2    public struct FaceBlock
 3    {
 4        public uint MD5Length; //32
 5        public uint uintcutLength; //4
 6        public uint FaceNameLength; //4
 7        public uint FaceFileNameLength; //36 md5 + extension
 8        public uint FileLength;
 9        public uint ThumbnailFileNameLength; //41 md5 + fixed.bmp
10        public uint ThumbnailFileLength;
11        public uint FrameLength;
12        public string MD5;
13        public string uintcuts;
14        public string FaceName;
15        public string FaceFileName;
16        public string ThumbnailFileName;
17        public byte[] FaceData;
18        public byte[] ThumbnailData;
19
20        public static FaceBlock FromImage(string file)
21        {
22            return FaceHelper.GetFaceBlockFromImage(file);
23        }
24
25        byte[] GetBytes(uint value)
26        {
27            byte[] bt = BitConverter.GetBytes(value);
28            List<byte bytes = new List<byte();
29            bytes.AddRange(bt);
30            if (bytes.Count < 4)
31            {
32                int l = 4 - bytes.Count;[next]
33                for (int i = 0; i < l; i++)
34                    bytes.Add((byte)0);
35            }
36            return bytes.ToArray();
37        }
38
39        public byte[] ToBytes()
40        {
41            List<byte bytes = new List<byte();
42            Encoding

来源:http://www.tulaoshi.com/n/20160129/1486282.html

延伸阅读
标签: 电脑入门
QQ默认表情没了怎么办?有网友反映自己的QQ默认表情没有了,重新安装QQ,还是没有QQ默认表情。也有出现过几个QQ在同一台电脑登陆,某个QQ没有默认表情的情况发生,那么此时该怎么办呢? 首先可以找到以你QQ号码命名的文件夹,打开该文件夹,删除CustomFace.db和CustomFac.dbc。比如你的QQ号码是 123456,是装在E盘的ProgramFilesTencentQQ下...
最终效果图 1、新建一个500x500像素的文档,用按shift+椭圆工具画一个正圆,点击右键设置图层样式,具体设置如下: 图1 效果如下: 图2 2、继续设置图层样式,渐变叠加具体如图: 图3 效果如下: 图4 3、新建个图层,前景色设为白色,用椭圆选取工具选取相应区域如下图: 图5 ...
标签: 电脑入门
    QQ中的表情大家都用过吧,的确很有意思。只是输入的时候需要用鼠标单击一下QQ表情按钮。这样才可以选择表情。其实不用鼠标照样可以实现表情的输入。首先按下"Caps Lock"键切换到大写状态。之后再按下"?"键。看看吧,表情是不是出来了,只要通过上下箭头键选择,然后按回车或者空格就可以选择了。怎么样,很方便吧?
手机QQ怎么删除大表情/魔法表情?   手机QQ删除大表情/魔法表情方法。自从手机QQ有了大表情以后大家都在使用大表情发送表情,而手机QQ也越来越多大表情给我们选择下载,自然就不想要之前的大表情想要删除却不知道怎么删除大表情了。今天小编就教大家手机QQ删除大表情/魔法表情方法。 1)首先打开手机QQ,在右上方点击,点击。 ...
标签: Web开发
需求:我们的ASP.NET站点需要提供多语言支持,考虑到我们使用的是ASP.NET2.0,我们可以利用资源文件来实现。   NOTE:这里我们使用编程的方法实现,使用其他方法,请参见: http://msdn2.microsoft.com/en-us/library/c6zyy3s9.aspx   接下来我们演示一个简单的例子 Steps:   Step1...

经验教程

34

收藏

49
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部