手把手教你玩轉QQ的原創表情
在這裏先鄙視一下騰訊對於表情圖片的惡意保護。
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的原創表情就與硬盤上的其他文件無異了。
QQ_Unicode_RichEdit_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 <IMG src="file:///C:\Users\zjs\AppData\Local\Temp\T})N)@B0X~IJR7UWW~1GL0Z.gif" sysface=105> <IMG src="file:///" >
</DIV><!--EndFragment-->
</body>
</html>
注意看後一個Img標籤,他的src路徑是空的,騰訊就是通過不將路徑寫入此結點,來達到保護原創表情的目的的。
在這裏我們大家一起來吐槽一下騰訊的兩個BUG
QQ在複製與粘貼的時候,在特定的情況下,即便不是原創表情,也無法複製粘貼,具體如下:
1. 當有原創表情,又有自定義圖片[如截圖等],其寫入的HTML Format中,連自定義圖片的路徑都看不到了
2. 當你在別處寫入了HTML Format格式,如果裏面有不帶擴展名的圖片與文字混合的話,想在QQ中粘貼,是粘貼不上的;
如何避開QQ的BUG?
通過上述剪貼板格式的分析,我想大家應該知道如何支持與QQ的帶原創表情的剪貼板的互通了:
1. 要粘貼時,結合HTML Format與 QQ_Unicode_RichEdit_Format,找到每一個圖片與表情的路徑
2. 向剪貼板寫入數據時,需要同時寫入QQ_Unicode_RichEdit_Format,這樣QQ才能將圖文正常的粘貼到其窗口中
好了,今天就爲大家介紹到了這裏了。
乖乖牛在線主頁:http://www.ggniu.cn/