移動端實現點擊圖片預覽放大+手勢縮放功能


上代碼!!!

后端:

@RequestMapping(value = "/lyzz", method = RequestMethod.GET)
public String lyzz(ModelMap model, HttpServletRequest request) throws Exception {
Map<String, String> ret = WechatUtil.getMap(request);
model.addAttribute("retMap", ret);
return "指定頁面";
}

/**
* 裝配map對象.
* @param request 請求.
* @return map對象.
*/
public static Map<String, String> getMap(HttpServletRequest request) {
String accessToken = getAccessToken(request);
//TODO 刪除
String jsApiTicket = getJsTicket(accessToken, request);
String nonceStr = createNonceString();
String timestamp = createTimestamp();
Map<String, String> ret = new HashMap<String, String>();
String url = request.getRequestURL().toString() + (request.getQueryString() != null && !"".equals(request.getQueryString()) ? "?" + request.getQueryString() : "");
ret.put("url", url);
ret.put("jsapi_ticket", jsApiTicket);
ret.put("nonceStr", nonceStr);
ret.put("timestamp", timestamp);
ret.put("appid", appId);//appId公眾號指定id
ret.put("accessToken", accessToken);
String signature = "";
try {
// 注意這里參數名必須全部小寫,且必須有序
String string1 = "jsapi_ticket=" + jsApiTicket + "&noncestr=" + nonceStr + "&timestamp=" + timestamp + "&url=" + url;
MessageDigest crypt = MessageDigest.getInstance("SHA-1");
crypt.reset();
crypt.update(string1.getBytes(CHARSET_NAME));//** 字符集定義.*/private static final String CHARSET_NAME = "UTF-8";

signature = byteToHex(crypt.digest()).toUpperCase();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
ret.put("signature", signature);
return ret;
}

前端

<img class="" id="imgsrc" src="" style="" onclick="previewImage(this.src);">

導入:

<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>

js:

<script type="text/javascript"> 

$().ready(function(){
wx.config({
debug: false, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。
appId: '${retMap.get('appid')}', // 必填,公眾號的唯一標識
timestamp: "${retMap.get('timestamp')}", // 必填,生成簽名的時間戳
nonceStr: "${retMap.get('nonceStr')}", // 必填,生成簽名的隨機串
signature: "${retMap.get('signature')}",// 必填,簽名,見附錄1
jsApiList: [
'checkJsApi',
'onMenuShareTimeline',
'onMenuShareAppMessage',
'onMenuShareQQ',
'onMenuShareWeibo',
'onMenuShareQZone',
'hideMenuItems',
'showMenuItems',
'hideAllNonBaseMenuItem',
'showAllNonBaseMenuItem',
'translateVoice',
'startRecord',
'stopRecord',
'onVoiceRecordEnd',
'playVoice',
'onVoicePlayEnd',
'pauseVoice',
'stopVoice',
'uploadVoice',
'downloadVoice',
'chooseImage',
'previewImage',
'uploadImage',
'downloadImage',
'getNetworkType',
'openLocation',
'getLocation',
'hideOptionMenu',
'showOptionMenu',
'closeWindow',
'scanQRCode',
'chooseWXPay',
'openProductSpecificView',
'addCard',
'chooseCard',
'openCard'
] // 必填,需要使用的JS接口列表,所有JS接口列表見附錄2
});
});
function previewImage(src){
//保存本地圖片地址,服務器圖片id,url
images = {
localId: [],
serverId: [],
urls:[]
};
wx.previewImage({
current: ''+src, // 當前顯示圖片的http鏈接 (必傳)
urls: images.urls // 需要預覽的圖片http鏈接列表(必傳)
});
}</script>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM