crop.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <div class="modal-header">
  2. <h4 class="modal-title">图片裁剪</h4>
  3. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
  4. </div>
  5. <div class="modal-body">
  6. <div class="avatar-body">
  7. <div class="row">
  8. <div class="col-md-9 m-t-sm">
  9. 当前区域(宽度:<span class="crop-width">0</span>px; 高度:<span class="crop-height">0</span>px),仅支持 jpeg/png 图片类型
  10. </div>
  11. <div class="col-md-2 hide">
  12. <input type="text" class="form-control manual" placeholder="输入大小">
  13. </div>
  14. <div class="col-md-3">
  15. <div class="avatar-upload pull-right">
  16. <button class="btn btn-primary" type="button" onClick="$('input[id=avatarInput]').click();">立即选择</button>
  17. <input type="file" accept="image/jpeg, image/png" name="file" id="avatarInput" class="hide" onchange="selectImg(this)">
  18. </div>
  19. </div>
  20. <div class="col-md-9">
  21. <div class="avatar-wrapper">
  22. <img id="tailoringImg">
  23. </div>
  24. </div>
  25. <div class="col-md-3">
  26. <div class="avatar-preview preview-lg"></div>
  27. <div class="avatar-preview preview-md"></div>
  28. <div class="avatar-preview preview-sm"></div>
  29. </div>
  30. </div>
  31. <div class="row avatar-btns">
  32. <div class="col-md-3">
  33. <span class="btn btn-white" data-method="rotate" data-option="-90"
  34. title="向左旋转90°"> 左旋转</span>
  35. <span class="btn btn-white" data-method="rotate" data-option="90"
  36. title="向右旋转90°"> 右旋转</span>
  37. </div>
  38. <div class="col-md-6" style="text-align: right;">
  39. <span class="btn btn-white" data-method="setDragMode" data-option="move"
  40. title="移动"> 移动</span>
  41. <div class="btn btn-white cropper-scaleX" title="换向"> 换向</div>
  42. <span class="btn btn-white" data-method="zoom" data-option="0.1"
  43. title="放大图片"> 放大</span>
  44. <span class="btn btn-white" data-method="zoom" data-option="-0.1"
  45. title="缩小图片"> 缩小</span>
  46. <span type="button" class="btn btn-white" data-method="reset" title="重置图片"> 重置</span>
  47. </div>
  48. </div>
  49. </div>
  50. </div>
  51. <div class="modal-footer">
  52. <button type="button" class="btn btn-white" data-dismiss="modal">关闭</button>
  53. <button type="button" class="btn btn-primary avatar-save" data-dismiss="modal">保存</button>
  54. </div>
  55. <script>
  56. var boxId = "<?= $boxId;?>";
  57. var multiple = "<?= $multiple;?>";
  58. var aspectRatio = "<?= $aspectRatio;?>";
  59. var uploaded = false;
  60. //cropper图片裁剪
  61. $('#tailoringImg').cropper({
  62. aspectRatio: aspectRatio,//默认比例
  63. preview: '.avatar-preview',//预览视图
  64. guides: true, //裁剪框的虚线(九宫格)
  65. autoCropArea: 0.5, //0-1之间的数值,定义自动剪裁区域的大小,默认0.8
  66. dragCrop: true, //是否允许移除当前的剪裁框,并通过拖动来新建一个剪裁框区域
  67. movable: true, //是否允许移动剪裁框
  68. resizable: true, //是否允许改变裁剪框的大小
  69. zoomable: true, //是否允许缩放图片大小
  70. mouseWheelZoom: false, //是否允许通过鼠标滚轮来缩放图片
  71. touchDragZoom: true, //是否允许通过触摸移动来缩放图片
  72. rotatable: true, //是否允许旋转图片
  73. minContainerWidth: 600, // 容器的最小宽度
  74. minContainerHeight: 364, // 容器的最小高度
  75. crop: function (e) {
  76. uploaded = true;
  77. // 输出结果数据裁剪图像。
  78. console.log(e.detail.x);
  79. console.log(e.detail.y);
  80. $('.crop-width').text(parseInt(e.detail.width));
  81. $('.crop-height').text(parseInt(e.detail.height));
  82. console.log(e.detail.width);
  83. console.log(e.detail.height);
  84. console.log(e.detail.rotate);
  85. console.log(e.detail.scaleX);
  86. console.log(e.detail.scaleY);
  87. }
  88. });
  89. $(".avatar-save").on("click", function () {
  90. if ($("#tailoringImg").attr("src") == null) {
  91. return false;
  92. } else {
  93. var cas = $('#tailoringImg').cropper('getCroppedCanvas');//获取被裁剪后的canvas
  94. var base64url = cas.toDataURL('image/png'); //转换为base64地址形式
  95. var base64 = base64url.split(',');
  96. $(document).trigger('cropper-upload-' + boxId, [base64[1], $('.crop-width').text(), $('.crop-height').text(), multiple, boxId]);
  97. }
  98. });
  99. $(".manual").on("blur", function () {
  100. var val = parseInt($(this).val());
  101. if (isNaN(val) || uploaded === false) {
  102. val = 0;
  103. }
  104. // 设置裁剪大小
  105. if (uploaded === true) {
  106. $('#tailoringImg').cropper('setCropBoxData', {
  107. width: val,
  108. height: val,
  109. })
  110. }
  111. $(this).val('');
  112. });
  113. </script>
粤ICP备19079148号