乖乖牛在线,为您提供最专业的组件化IM平台!

手把手教你玩转QQ的原创表情

发布日期:2015-10-22
作者:管理员

在这里先鄙视一下腾讯对于表情图片的恶意保护。

QQ的原创表情非常的可爱,做得比较精致,深受广大QQ用户的喜爱;但怎么将这些表情保存下来,好让我可以在别的地方用呢?

现在网关于QQ原创表情的文章已经很多,但绝大多数是如何导入、导出,对于QQ原创表情为什么能在QQ内部复制,却没办法保存到本地缺少说明。

乖乖牛在线将从不同的视角,为你解析QQ原创表情的存储、互通、保护的机制;熟悉了这些后,你将不光能够将自己喜欢的原创表情保存下来;如果你有自己的产品,也可以轻松的让自己的产品支持QQ的原创表情噢。

乖乖牛在线全线产品均支持将QQ原创表情的获取过来,并且展示在界面上,予以复用。

在乖乖牛产品中如何获取QQ原创表情

1. 牛牛截图中如何获取QQ原创表情

1).先在QQ中复制一张原创表情

2).进入http://www.ggniu.cn/testcapture.html页面,选择从剪贴板复制

3). 点击截图,是不是原创表情乖乖的显示到了页面上?

2. 牛牛图片查看器中如何获取QQ原创表情

1). 先在QQ中复制一张原创表情

2). 打开牛牛图片查看器,通过Ctrl+V来粘贴,是不是原创表情已经显示出来了[可以另存为保存噢]?

3. NiuniuImageOle控件中如何获取QQ原创表情

NiuniuImageOle不光支持QQ原创表情的复制粘贴,还可以将有原创表情的图文信息一并粘贴下来噢,实际操作一下吧:
1) 在QQ中输入一些表情、文字、截图、原创表情,然后复制

2) 打开NiuniuImageOle控件的示例程序,在输入窗口中点击粘贴,是不是图文都全部显示出来了?

想让你的产品也拥有这样的功能么? 赶紧将乖乖牛在线的控件集成到你的产品中吧,完全免费的噢!

原理解析

接下来给大家说一下实现的原理,其实所有的秘密都在Windows的剪贴板中,先给大家介绍一个查看剪贴板数据的工具:InsideClipboard,打开这个工具,当你复制QQ中的图文信息的时候,你会在InsideClipborad中看到如下信息:

如果你的程序能够顺利的读取剪贴板中的数据,那么QQ的原创表情就与硬盘上的其他文件无异了。
QQUnicodeRichEdit_Format 是腾讯自定义的剪贴板格式,他的内容如下:

<QQRichEditFormat>
<Info version="1001"></Info>
<EditElement type="0"><![CDATA[test ]]></EditElement>
<EditElement type="2" sysfaceindex="105" filepath="" shortcut=""></EditElement>
<EditElement type="0"><![CDATA[  ]]></EditElement>
<EditElement type="5" filepath="C:\Users\zjs\AppData\Local\Temp\2$RR25}U[P64P9(1(6%]V%8" shortcut="" fileid="37b80a9f9f992ab67dd49d0302a3890d" extdata="" tip="" mediatype="0"></EditElement>
</QQRichEditFormat>

注意看那个 type=”5”的结点,这个就是QQ的原创表情,你可以直接把他的路径复制出来,这就是那个原创表情在电脑上存储的位置了。

我们再来看看HTML Format,这个是系统上大多数程序都支持的格式了,他的内容如下:

Version:0.9
StartHTML:00000112
EndHTML:00000332
StartFragment:00000126
EndFragment:00000296
<!doctype html><html><body>
<!--StartFragment --><DIV>
test&nbsp;<IMG src="file:///C:\Users\zjs\AppData\Local\Temp\T})N)@B0X~IJR7UWW~1GL0Z.gif" sysface=105>&nbsp;&nbsp;<IMG src="file:///" >
</DIV><!--EndFragment-->
</body>
</html>

注意看后一个Img标签,他的src路径是空的,腾讯就是通过不将路径写入此结点,来达到保护原创表情的目的的。

在这里我们大家一起来吐槽一下腾讯的两个BUG ##

QQ在复制与粘贴的时候,在特定的情况下,即便不是原创表情,也无法复制粘贴,具体如下:
1. 当有原创表情,又有自定义图片[如截图等],其写入的HTML Format中,连自定义图片的路径都看不到了
2. 当你在别处写入了HTML Format格式,如果里面有不带扩展名的图片与文字混合的话,想在QQ中粘贴,是粘贴不上的;

如何避开QQ的BUG?

通过上述剪贴板格式的分析,我想大家应该知道如何支持与QQ的带原创表情的剪贴板的互通了:
1. 要粘贴时,结合HTML Format与 QQUnicodeRichEditFormat,找到每一个图片与表情的路径
2. 向剪贴板写入数据时,需要同时写入QQUnicodeRichEdit
Format,这样QQ才能将图文正常的粘贴到其窗口中

好了,今天就为大家介绍到了这里了。

通过如下链接可以了解乖乖牛产品的详情

牛牛图片查看器: http://www.ggniu.cn/articles/imageviewer.html
NiuniuImageOle控件:http://www.ggniu.cn/articles/niuniuimageole.html

您可以前往 下载页面 去下载示例。

更多信息,请访问 http://www.ggniu.cn/