微信公众平台 qq表情

java:



import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.core.io.support.PropertiesLoaderUtils;




/**
 * 表情工具类
 * @author yym
 * 2014-3-28 下午12:52:44
 *
 */
public class QQFaceUtils {

private static Properties QQFACE_CODE_TO_IMG_CACHE;
private static Map<String, String> QQFACE_IMG_TO_CODE_CACHE;
private static Log log = LogFactory.getLog(QQFaceUtils.class);

/**
* 加载配置文件
*/
private static void loadProperties(){
try {
QQFACE_CODE_TO_IMG_CACHE = PropertiesLoaderUtils.loadAllProperties("config/qqface.properties");
}
catch (IOException e) {
log.error("文件不存在!config/qqface.properties");
}
}

/**
* 通过表情代码获得图片
* @param key
* @return
*/
private static String getImg(String key){
if (QQFACE_CODE_TO_IMG_CACHE == null) {
loadProperties();
}
return (String) QQFACE_CODE_TO_IMG_CACHE.get(key);
}
/**
* 通过图片获得表情代码
* @param key
* @return
*/
private static String getCode(String key){
if (QQFACE_CODE_TO_IMG_CACHE == null) {
loadProperties();
}
if (QQFACE_CODE_TO_IMG_CACHE != null) {
QQFACE_IMG_TO_CODE_CACHE = new HashMap<String, String>();
for (Entry<Object, Object> entry : QQFACE_CODE_TO_IMG_CACHE.entrySet()) {
QQFACE_IMG_TO_CODE_CACHE.put((String)entry.getValue(), (String)entry.getKey());
}
}
return (String) QQFACE_IMG_TO_CODE_CACHE.get(key);
}
/**
* 将img转换为微信表情代码
* @param str
* @return
*/
public static String ImgtoCode(String str){
String reg = "<img src='resources/plugin/qqFace/arclist/[\u4e00-\u9fa5]{1,3}.gif'/>|<img src='resources/plugin/qqFace/arclist/[0-9]{1,3}.gif'/>";
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(str);
String tmp = null;
String value = null;
while(m.find()){
tmp = m.group();
value = getCode(tmp);
str = str.replace(tmp, value == null?"":value);
}
return str;
}
/**
* 将[em_*]转换为图片
* @return
*/
public static String EmtoImg(String str){
String reg = "\\[em_\\d{1,3}\\]";
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(str);
String tmp = null;
String number ;
while(m.find()){
tmp = m.group();
number = tmp;
number = number.substring(4,number.length());
number = number.substring(0, number.length()-1);
number = "<img src='resources/plugin/qqFace/arclist/"+number+".gif'/>";
str = str.replace(tmp, number);
}
return str;
}
/**
* 将[em_*]转换为表情代码
* @return
*/
public static String EmtoCode(String str){
String reg = "\\[em_\\d{1,3}\\]";
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(str);
String tmp = null;
String number ;
while(m.find()){
tmp = m.group();
number = tmp;
number = number.substring(4,number.length());
number = number.substring(0, number.length()-1);
number = "<img src='resources/plugin/qqFace/arclist/"+number+".gif'/>";
str = str.replace(tmp, number);
}
return ImgtoCode(str);
}
/**
* 将微信符号表情转换为img图片
* 接受到微信文本消息后,将文本内容表情转换为img保存。
* @return
*/
public static String CodeToImg(String str){
String reg = "/::\\)|/::~|/::B|/::\\||/:8-\\)|/::<|/::\\$|/::X|/::Z|/::'\\(|/::-\\||/::@|/::P|/::D|/::O|/::\\(|/::\\+|/:--b|/::Q|/::T|/:,@P|/:,@-D|/::d|/:,@o|/::g|/:\\|-\\)|/::!|/::L|/::>|/::,@|/:,@f|/::-S|/:\\?|/:,@x|/:,@@|/::8|/:,@!|/:!!!|/:xx|/:bye|/:wipe|/:dig|/:handclap|/:&-\\(|/:B-\\)|/:<@|/:@>|/::-O|/:>-\\||/:P-\\(|/::'\\||/:X-\\)|/::\\*|/:@x|/:8\\*|/:pd|/:<W>|/:beer|/:basketb|/:oo|/:coffee|/:eat|/:pig|/:rose|/:fade|/:showlove|/:heart|/:break|/:cake|/:li|/:bome|/:kn|/:footb|/:ladybug|/:shit|/:moon|/:sun|/:gift|/:hug|/:strong|/:weak|/:share|/:v|/:@\\)|/:jj|/:@@|/:bad|/:lvu|/:no|/:ok|/:love|/:<L>|/:jump|/:shake|/:<O>|/:circle|/:kotow|/:turn|/:skip|/:oY|/:#-0|/:hiphot|/:kiss|/:<&|/:&>|\\[[\u4e00-\u9fa5]{1,3}\\]";
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(str);
String tmp = null;
String value = null;
while(m.find()){
tmp = m.group();
value = getImg(tmp);
str = str.replace(tmp, value == null?"":value);
}
return str;
}
public static void main(String[] args) throws IOException {
/*File root = new File("f:/pic");
File[] files = root.listFiles();
StringBuffer sb = new StringBuffer();
String filename = null;
for (File file : files) {
filename = file.getName();
filename = filename.substring(0,filename.length()-4);
sb.append("/").append(UnicodeUtil.formatUnicode(filename)).append("=").append("<img src='resources/plugin/qqFace/arclist/"+UnicodeUtil.formatUnicode(filename)+".gif'/>").append("\n");
}

System.out.println(sb.toString());*/
/*String str = "<img src='resources/plugin/qqFace/arclist/OK.gif'/>dasdads" +
"<img src='resources/plugin/qqFace/arclist/微笑.gif'/>" +
"<img src='resources/plugin/qqFace/arclist/微笑.gif'/>";
System.out.println(ImgtoCode(str));

File root = new File("f:/test.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(root)));
String line;
int i =1;
while((line = reader.readLine()) != null){
System.out.println(line+"="+"<img src='resources/plugin/qqFace/arclist/"+i+".gif'/>");
i++;
}*/

System.out.println(CodeToImg("/::) /:bome/:kn/:footb/:ladybug:"));
System.out.println(ImgtoCode("<img src='resources/plugin/qqFace/arclist/1.gif'/> <img src='resources/plugin/qqFace/arclist/71.gif'/><img src='resources/plugin/qqFace/arclist/72.gif'/><img src='resources/plugin/qqFace/arclist/73.gif'/><img src='resources/plugin/qqFace/arclist/74.gif'/>:"));

}
}


js:

// QQ表情插件
(function($){  
$.fn.qqFace = function(options){
var defaults = {
id : 'emotionbox',
path : 'face/',
assign : 'content',
tip : 'em_'
};
var option = $.extend(defaults, options);
var assign = $('#'+option.assign);
var id = option.id;
var path = option.path;
var tip = option.tip;

if(assign.length<=0){
alert('缺少表情赋值对象。');
return false;
}

$(this).click(function(e){
var strFace, labFace;
if($('#'+id).length<=0){
strFace = '<div id="'+id+'" style="position:absolute;display:none;z-index:1000;" class="qqFace">' +
 '<table border="0" cellspacing="0" cellpadding="0"><tr>';
for(var i=1; i<=105; i++){
labFace = '['+tip+i+']';
strFace += '<td><img src="'+path+i+'.gif" οnclick="$(\'#'+option.assign+'\').setCaret();$(\'#'+option.assign+'\').insertAtCaret(\'' + labFace + '\');" /></td>';
if( i % 15 == 0 ) strFace += '</tr><tr>';
}
strFace += '</tr></table></div>';
}
$(this).parent().append(strFace);
var offset = $(this).position();
var top = offset.top - $(this).outerHeight() - 200;
$('#'+id).css('top',top);
$('#'+id).css('left',offset.left);
$('#'+id).show();
e.stopPropagation();
});


$(document).click(function(){
$('#'+id).hide();
$('#'+id).remove();
});
};


})(jQuery);


jQuery.extend({ 
unselectContents: function(){ 
if(window.getSelection) 
window.getSelection().removeAllRanges(); 
else if(document.selection) 
document.selection.empty(); 

}); 
jQuery.fn.extend({ 
selectContents: function(){ 
$(this).each(function(i){ 
var node = this; 
var selection, range, doc, win; 
if ((doc = node.ownerDocument) && (win = doc.defaultView) && typeof win.getSelection != 'undefined' && typeof doc.createRange != 'undefined' && (selection = window.getSelection()) && typeof selection.removeAllRanges != 'undefined'){ 
range = doc.createRange(); 
range.selectNode(node); 
if(i == 0){ 
selection.removeAllRanges(); 

selection.addRange(range); 
} else if (document.body && typeof document.body.createTextRange != 'undefined' && (range = document.body.createTextRange())){ 
range.moveToElementText(node); 
range.select(); 

}); 
}, 


setCaret: function(){ 
/*if(!$.browser.msie) return; */
var initSetCaret = function(){ 
var textObj = $(this).get(0); 
textObj.caretPos = document.selection.createRange().duplicate(); 
}; 
$(this).click(initSetCaret).select(initSetCaret).keyup(initSetCaret); 
}, 


insertAtCaret: function(textFeildValue){ 
var textObj = $(this).get(0); 
if(document.all && textObj.createTextRange && textObj.caretPos){ 
var caretPos=textObj.caretPos; 
caretPos.text = caretPos.text.charAt(caretPos.text.length-1) == '' ? 
textFeildValue+'' : textFeildValue; 
} else if(textObj.setSelectionRange){ 
var rangeStart=textObj.selectionStart; 
var rangeEnd=textObj.selectionEnd; 
var tempStr1=textObj.value.substring(0,rangeStart); 
var tempStr2=textObj.value.substring(rangeEnd); 
textObj.value=tempStr1+textFeildValue+tempStr2; 
textObj.focus(); 
var len=textFeildValue.length; 
textObj.setSelectionRange(rangeStart+len,rangeStart+len); 
textObj.blur(); 
}else{ 
textObj.value+=textFeildValue; 


});

qqface.properties

/\:\:)=<img src='resources/plugin/qqFace/arclist/1.gif'/>
/\:\:~=<img src='resources/plugin/qqFace/arclist/2.gif'/>
/\:\:B=<img src='resources/plugin/qqFace/arclist/3.gif'/>
/\:\:|=<img src='resources/plugin/qqFace/arclist/4.gif'/>
/\:8-)=<img src='resources/plugin/qqFace/arclist/5.gif'/>
/\:\:<=<img src='resources/plugin/qqFace/arclist/6.gif'/>
/\:\:$=<img src='resources/plugin/qqFace/arclist/7.gif'/>
/\:\:X=<img src='resources/plugin/qqFace/arclist/8.gif'/>
/\:\:Z=<img src='resources/plugin/qqFace/arclist/9.gif'/>
/\:\:'(=<img src='resources/plugin/qqFace/arclist/10.gif'/>
/\:\:-|=<img src='resources/plugin/qqFace/arclist/11.gif'/>
/\:\:@=<img src='resources/plugin/qqFace/arclist/12.gif'/>
/\:\:P=<img src='resources/plugin/qqFace/arclist/13.gif'/>
/\:\:D=<img src='resources/plugin/qqFace/arclist/14.gif'/>
/\:\:O=<img src='resources/plugin/qqFace/arclist/15.gif'/>
/\:\:(=<img src='resources/plugin/qqFace/arclist/16.gif'/>
/\:\:+=<img src='resources/plugin/qqFace/arclist/17.gif'/>
/\:--b=<img src='resources/plugin/qqFace/arclist/18.gif'/>
/\:\:Q=<img src='resources/plugin/qqFace/arclist/19.gif'/>
/\:\:T=<img src='resources/plugin/qqFace/arclist/20.gif'/>
/\:,@P=<img src='resources/plugin/qqFace/arclist/21.gif'/>
/\:,@-D=<img src='resources/plugin/qqFace/arclist/22.gif'/>
/\:\:d=<img src='resources/plugin/qqFace/arclist/23.gif'/>
/\:,@o=<img src='resources/plugin/qqFace/arclist/24.gif'/>
/\:\:g=<img src='resources/plugin/qqFace/arclist/25.gif'/>
/\:|-)=<img src='resources/plugin/qqFace/arclist/26.gif'/>
/\:\:!=<img src='resources/plugin/qqFace/arclist/27.gif'/>
/\:\:L=<img src='resources/plugin/qqFace/arclist/28.gif'/>
/\:\:>=<img src='resources/plugin/qqFace/arclist/29.gif'/>
/\:\:,@=<img src='resources/plugin/qqFace/arclist/30.gif'/>
/\:,@f=<img src='resources/plugin/qqFace/arclist/31.gif'/>
/\:\:-S=<img src='resources/plugin/qqFace/arclist/32.gif'/>
/\:?=<img src='resources/plugin/qqFace/arclist/33.gif'/>
/\:,@x=<img src='resources/plugin/qqFace/arclist/34.gif'/>
/\:,@@=<img src='resources/plugin/qqFace/arclist/35.gif'/>
/\:\:8=<img src='resources/plugin/qqFace/arclist/36.gif'/>
/\:,@!=<img src='resources/plugin/qqFace/arclist/37.gif'/>
/\:!!!=<img src='resources/plugin/qqFace/arclist/38.gif'/>
/\:xx=<img src='resources/plugin/qqFace/arclist/39.gif'/>
/\:bye=<img src='resources/plugin/qqFace/arclist/40.gif'/>
/\:wipe=<img src='resources/plugin/qqFace/arclist/41.gif'/>
/\:dig=<img src='resources/plugin/qqFace/arclist/42.gif'/>
/\:handclap=<img src='resources/plugin/qqFace/arclist/43.gif'/>
/\:&-(=<img src='resources/plugin/qqFace/arclist/44.gif'/>
/\:B-)=<img src='resources/plugin/qqFace/arclist/45.gif'/>
/\:<@=<img src='resources/plugin/qqFace/arclist/46.gif'/>
/\:@>=<img src='resources/plugin/qqFace/arclist/47.gif'/>
/\:\:-O=<img src='resources/plugin/qqFace/arclist/48.gif'/>
/\:>-|=<img src='resources/plugin/qqFace/arclist/49.gif'/>
/\:P-(=<img src='resources/plugin/qqFace/arclist/50.gif'/>
/\:\:'|=<img src='resources/plugin/qqFace/arclist/51.gif'/>
/\:X-)=<img src='resources/plugin/qqFace/arclist/52.gif'/>
/\:\:*=<img src='resources/plugin/qqFace/arclist/53.gif'/>
/\:@x=<img src='resources/plugin/qqFace/arclist/54.gif'/>
/\:8*=<img src='resources/plugin/qqFace/arclist/55.gif'/>
/\:pd=<img src='resources/plugin/qqFace/arclist/56.gif'/>
/\:<W>=<img src='resources/plugin/qqFace/arclist/57.gif'/>
/\:beer=<img src='resources/plugin/qqFace/arclist/58.gif'/>
/\:basketb=<img src='resources/plugin/qqFace/arclist/59.gif'/>
/\:oo=<img src='resources/plugin/qqFace/arclist/60.gif'/>
/\:coffee=<img src='resources/plugin/qqFace/arclist/61.gif'/>
/\:eat=<img src='resources/plugin/qqFace/arclist/62.gif'/>
/\:pig=<img src='resources/plugin/qqFace/arclist/63.gif'/>
/\:rose=<img src='resources/plugin/qqFace/arclist/64.gif'/>
/\:fade=<img src='resources/plugin/qqFace/arclist/65.gif'/>
/\:showlove=<img src='resources/plugin/qqFace/arclist/66.gif'/>
/\:heart=<img src='resources/plugin/qqFace/arclist/67.gif'/>
/\:break=<img src='resources/plugin/qqFace/arclist/68.gif'/>
/\:cake=<img src='resources/plugin/qqFace/arclist/69.gif'/>
/\:li=<img src='resources/plugin/qqFace/arclist/70.gif'/>
/\:bome=<img src='resources/plugin/qqFace/arclist/71.gif'/>
/\:kn=<img src='resources/plugin/qqFace/arclist/72.gif'/>
/\:footb=<img src='resources/plugin/qqFace/arclist/73.gif'/>
/\:ladybug=<img src='resources/plugin/qqFace/arclist/74.gif'/>
/\:shit=<img src='resources/plugin/qqFace/arclist/75.gif'/>
/\:moon=<img src='resources/plugin/qqFace/arclist/76.gif'/>
/\:sun=<img src='resources/plugin/qqFace/arclist/77.gif'/>
/\:gift=<img src='resources/plugin/qqFace/arclist/78.gif'/>
/\:hug=<img src='resources/plugin/qqFace/arclist/79.gif'/>
/\:strong=<img src='resources/plugin/qqFace/arclist/80.gif'/>
/\:weak=<img src='resources/plugin/qqFace/arclist/81.gif'/>
/\:share=<img src='resources/plugin/qqFace/arclist/82.gif'/>
/\:v=<img src='resources/plugin/qqFace/arclist/83.gif'/>
/\:@)=<img src='resources/plugin/qqFace/arclist/84.gif'/>
/\:jj=<img src='resources/plugin/qqFace/arclist/85.gif'/>
/\:@@=<img src='resources/plugin/qqFace/arclist/86.gif'/>
/\:bad=<img src='resources/plugin/qqFace/arclist/87.gif'/>
/\:lvu=<img src='resources/plugin/qqFace/arclist/88.gif'/>
/\:no=<img src='resources/plugin/qqFace/arclist/89.gif'/>
/\:ok=<img src='resources/plugin/qqFace/arclist/90.gif'/>
/\:love=<img src='resources/plugin/qqFace/arclist/91.gif'/>
/\:<L>=<img src='resources/plugin/qqFace/arclist/92.gif'/>
/\:jump=<img src='resources/plugin/qqFace/arclist/93.gif'/>
/\:shake=<img src='resources/plugin/qqFace/arclist/94.gif'/>
/\:<O>=<img src='resources/plugin/qqFace/arclist/95.gif'/>
/\:circle=<img src='resources/plugin/qqFace/arclist/96.gif'/>
/\:kotow=<img src='resources/plugin/qqFace/arclist/97.gif'/>
/\:turn=<img src='resources/plugin/qqFace/arclist/98.gif'/>
/\:skip=<img src='resources/plugin/qqFace/arclist/99.gif'/>
/\:oY=<img src='resources/plugin/qqFace/arclist/100.gif'/>
/\:#-0=<img src='resources/plugin/qqFace/arclist/101.gif'/>
[\u8857\u821E]=<img src='resources/plugin/qqFace/arclist/102.gif'/>
/\:kiss=<img src='resources/plugin/qqFace/arclist/103.gif'/>
/\:<&=<img src='resources/plugin/qqFace/arclist/104.gif'/>
/\:&>=<img src\='resources/plugin/qqFace/arclist/105.gif'/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值