貼圖的實現方式為:
1、把剪切板中的圖片存在本地的SendingImages目錄,存放的格式使用PNG,當然可以其他格式,但是PNG格式更小。
2、使用MD5算法產生一個ImageID。當然可以使用SHA1等其他算法
3、把imageID發送remote peer
4、當remote peer收到imageID時,檢查本地ReceivedImage目錄,如果已經存在,顯示圖片,不存在則發送一個RequestImage請求,并在聊天記錄中顯示一個等待信息(為一個GIF動畫)。
5、本地Peer收到RequestImage請求之后,發送圖片數據。如果圖片大于64K,則分塊發送。
6、remote peer收到圖像數據之后,進行校驗,看是否正確。
7、校驗通過后,把圖片在聊天面板上顯示(替換等待圖片)
預定義表情的實現很簡單,自定義表情的實現和貼圖實現一致,只是少了從剪貼板保存圖片的過程。