l-img-view.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. var $imgMsg, naturalWidthSize, naturalWidth, $img, winWidth, winHeight, isW;
  2. var $imgMenuMsk;
  3. var $imgmenuwrapper;
  4. var menuShowed = false;
  5. mui.plusReady(function(){
  6. $('#__MUI_PREVIEWIMAGE').prepend('<div class="img-bar">···</div>');
  7. $('body').prepend(
  8. // '<div class="img-bar">···</div>'+
  9. '<div class="img-menu-msk" >' +
  10. '<div class="img-menu-wrapper">' +
  11. '<ul class="img-menu">' +
  12. '<li id="zftp">转发给其他人</li>' +
  13. '<li id="savePic">保存到本地</li>' +
  14. '<li id="loc_chat">定位到聊天位置</li>' +
  15. '</ul>' +
  16. '<div class="img-menu-cancle">取消</div>' +
  17. '</div>' +
  18. '</div>');
  19. $imgMenuMsk = $('.img-menu-msk');
  20. $imgmenuwrapper = $('.img-menu-wrapper');
  21. bindEvts();
  22. })
  23. function bindEvts(){
  24. /**
  25. * 右上角按钮点击事件
  26. */
  27. $('.img-bar').on('tap', function(){
  28. if(menuShowed) {
  29. hideMenu();
  30. } else {
  31. showMenu();
  32. }
  33. return false;
  34. })
  35. /**
  36. * 取消
  37. */
  38. $('.img-menu-cancle').on('tap', function(){
  39. hideMenu();
  40. return false;
  41. })
  42. /**
  43. * 保存图片
  44. */
  45. $('#savePic').on('tap', function(){
  46. downLoadImg($('.mui-slider-item.mui-zoom-wrapper.mui-active img').attr('src'));
  47. return false;
  48. })
  49. /**
  50. * 定位聊天位置
  51. */
  52. $('#loc_chat').on('tap', function(){
  53. hideMenu();
  54. prevImage.close();
  55. plus.nativeUI.showWaiting();
  56. locationImg($('.mui-slider-item.mui-zoom-wrapper.mui-active img').attr('data-code'));
  57. return false;
  58. })
  59. /**
  60. * 转发图片
  61. */
  62. $('#zftp').on('tap', function(){
  63. toZf([{content: $('.mui-slider-item.mui-zoom-wrapper.mui-active img').attr('src'), type: 2}]);
  64. return false;
  65. })
  66. }
  67. function showMenu(){
  68. if(!menuShowed){
  69. menuShowed = true;
  70. $imgMenuMsk.show();
  71. $imgmenuwrapper.fadeIn('fast');
  72. }
  73. }
  74. function hideMenu(){
  75. if(menuShowed){
  76. menuShowed = false;
  77. $imgMenuMsk.hide();
  78. $imgmenuwrapper.fadeOut('fast');
  79. }
  80. }
  81. /*$('body').on('tap', '.mui-slider.mui-preview-image', function(){
  82. $('.img-bar').fadeOut(500);
  83. })
  84. $('body').on('tap', '.word-bread img', function(){
  85. $('.img-bar').show();
  86. $img.css({'min-height': 'initial', 'top': 'auto', 'left': 'auto', 'width': 'auto', 'height': 'auto'})
  87. .addClass('orign')
  88. .attr('src', $(this).attr('src'));
  89. winWidth = $(window).width();
  90. winHeight = $(window).height();
  91. naturalWidthSize = getNaturalSize($img);
  92. naturalWidth = naturalWidthSize.w;
  93. $imgMsg.fadeIn("normal", function(){
  94. if(naturalWidthSize.w > winWidth || naturalWidthSize.h > winHeight){
  95. if(naturalWidthSize.w > naturalWidthSize.h){
  96. $img.css('min-height', $img.height() +'px');
  97. } else {
  98. $img.css('min-height', '100%');
  99. }
  100. } else {
  101. $img.css('min-height', naturalWidthSize.h+ "px");
  102. }
  103. });
  104. return false;
  105. }) */
  106. $('body').on('tap', '.img-menu-msk', function(){
  107. if(menuShowed){
  108. hideMenu();
  109. } else
  110. $imgMsg.fadeOut("normal");
  111. return false;
  112. })
  113. var ssx1, ssy1, ssx2, ssy2, targets;
  114. var distance = 0, oldWidth, oldH, oTop, oLeft;
  115. var isDouble = false;
  116. $('body').on('touchstart', '.img-msk', function(e){
  117. targets = e.originalEvent.touches;
  118. if(targets.length==2 && !menuShowed){
  119. e.preventDefault();
  120. isDouble = true;
  121. ssx1 = targets[0].screenX;
  122. ssy1 = targets[0].screenY;
  123. ssx2 = targets[1].screenX;
  124. ssy2 = targets[1].screenY;
  125. oldWidth = $img.width();
  126. oldH = $img.height();
  127. distance = getDistance(ssx1, ssy1, ssx2, ssy2);
  128. } else if(targets.length==1){
  129. isDouble = false;
  130. } else {
  131. isDouble = false;
  132. }
  133. }).on('touchmove', '.img-msk', function(e){
  134. targets = e.originalEvent.touches;
  135. if(targets.length==2 && !menuShowed){
  136. e.preventDefault();
  137. var off = getDistance(targets[0].screenX, targets[0].screenY, targets[1].screenX, targets[1].screenY);
  138. var dis = (off-distance) * 2;
  139. $img.height(oldH + dis);
  140. $img.removeClass('orign');
  141. } else if(targets.length==1 && !isDouble){
  142. } else
  143. return false;
  144. })
  145. function getDistance(x1, y1, x2, y2){
  146. return Math.sqrt( Math.pow((x1-x2), 2) + Math.pow((y1-y2), 2) )
  147. }
  148. function getNaturalSize($img) {
  149. var image = new Image()
  150. image.src = $img.attr('src');
  151. return {w: image.width, h: image.height}
  152. }
  153. /**
  154. * 下载图片
  155. * @param {Object} url
  156. */
  157. function downLoadImg(url){
  158. var dtask = plus.downloader.createDownload(
  159. url, {filename: "_downloads/"}, function ( d, status ) {
  160. if ( status == 200 ) {
  161. hideMenu();
  162. plus.gallery.save( plus.io.convertLocalFileSystemURL( d.filename ), function(){
  163. mui.toast("图片已保存至相册");
  164. }, function(){
  165. mui.toast("图片保存失败!")
  166. });
  167. } else {
  168. mui.toast("图片保存失败!")
  169. }
  170. });
  171. dtask.start();
  172. }