profile.html 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>头像上传</title>
  6. <link rel="stylesheet" href="../../../component/pear/css/pear.css" />
  7. </head>
  8. <body class="pear-container">
  9. <div class="layui-row layui-col-space15">
  10. <div class="layui-col-xs9">
  11. <div style="height:325px;background-color: rgb(247, 247, 247);">
  12. <img id="sourceImage" src="">
  13. </div>
  14. </div>
  15. <div class="layui-col-xs3" style="padding-left:0px;">
  16. <div id="previewImage" style="width:210px;height:210px;border: 1px solid rgb(200, 200, 200);border-radius: 50%;overflow:hidden;">
  17. </div>
  18. </div>
  19. </div>
  20. <div class="layui-row">
  21. <div class="layui-form-item">
  22. <div class="layui-input-inline layui-btn-container" style="width: auto;vertical-align:top;">
  23. <button class="pear-btn pear-btn-sm pear-btn-primary layui-icon layui-icon-left" cropper-event="rotate" data-option="-15" title="左旋15°"></button>
  24. <button class="pear-btn pear-btn-sm pear-btn-primary layui-icon layui-icon-right" cropper-event="rotate" data-option="15" title="右旋15°"></button>
  25. <button class="pear-btn pear-btn-sm pear-btn-danger layui-icon layui-icon-refresh" cropper-event="reset" title="重置"></button>
  26. <label for="uploadPicture" class="pear-btn pear-btn-sm pear-btn-primary layui-icon layui-icon-upload" title="选择图片"></label>
  27. <input class="layui-upload-file" id="uploadPicture" type="file" value="选择图片">
  28. </div>
  29. <div class="layui-form-mid layui-word-aux">建议:图片的尺寸宽高比为1:1,大小在5m以内。</div>
  30. </div>
  31. </div>
  32. <script src="../../../component/layui/layui.js"></script>
  33. <script src="../../../component/pear/pear.js"></script>
  34. <script>
  35. layui.use(['jquery','layer','cropper'], function () {
  36. let $ = layui.jquery;
  37. let layer = layui.layer;
  38. let cropper = layui.cropper;
  39. var options = {
  40. aspectRatio: 1 / 1, // 裁剪框比例
  41. preview: '#previewImage', // 预览div
  42. viewmode: 1
  43. };
  44. $("#sourceImage").attr("src", parent.layui.$("#userAvatar").attr("src"));
  45. $("#sourceImage").cropper(options);
  46. window.submitForm = function () {
  47. $("#sourceImage").crossOrigin = 'anonymous';//解决跨域图片问题
  48. $("#sourceImage").cropper("getCroppedCanvas", {
  49. width: 280,
  50. height: 140
  51. }).toBlob(function (blob) {
  52. var timeStamp = Date.parse(new Date());
  53. var fileName = timeStamp + '.jpg';
  54. var formData = new FormData();
  55. formData.append('file', blob, fileName);
  56. formData.append('fileName', fileName);
  57. formData.append('fileToken', timeStamp);
  58. var reader = new FileReader();
  59. reader.readAsDataURL(blob);
  60. reader.onload = function (e) {
  61. var data={
  62. index:parent.layer.getFrameIndex(window.name),
  63. newAvatar : e.target.result
  64. };
  65. console.log(data);
  66. parent.window.callback(data);
  67. };
  68. });
  69. }
  70. $(".pear-btn").on('click', function () {
  71. var event = $(this).attr("cropper-event");
  72. if (event === 'rotate') {
  73. var option = $(this).attr('data-option');
  74. $("#sourceImage").cropper('rotate', option);
  75. } else if (event === 'reset') {
  76. $("#sourceImage").cropper('reset');
  77. }
  78. $("#uploadPicture").change(function () {
  79. var r = new FileReader();
  80. var f = this.files[0];
  81. var uploadFileSize = f.size / 1024;
  82. if (uploadFileSize > 5120) {
  83. parent.layer.msg("上传文件不得超过5m", { icon: 5 });
  84. return false;
  85. }
  86. r.readAsDataURL(f);
  87. r.onload = function (e) {
  88. $("#sourceImage")
  89. .cropper('destroy')
  90. .attr('src', this.result)
  91. .cropper(options);
  92. };
  93. });
  94. });
  95. });
  96. </script>
  97. </body>
  98. </html>