1
0

index.vue 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <template>
  2. <PageWrapper title="图片裁剪示例" content="需要开启测试接口服务才能进行上传测试!">
  3. <CollapseContainer title="头像裁剪">
  4. <CropperAvatar :uploadApi="uploadApi" />
  5. </CollapseContainer>
  6. <CollapseContainer title="矩形裁剪" class="my-4">
  7. <div class="container p-4">
  8. <div class="cropper-container mr-10">
  9. <CropperImage ref="refCropper" :src="img" @cropend="handleCropend" style="width: 40vw" />
  10. </div>
  11. <img :src="cropperImg" class="croppered" v-if="cropperImg" />
  12. </div>
  13. <p v-if="cropperImg">裁剪后图片信息:{{ info }}</p>
  14. </CollapseContainer>
  15. <CollapseContainer title="圆形裁剪">
  16. <div class="container p-4">
  17. <div class="cropper-container mr-10">
  18. <CropperImage
  19. ref="refCropper"
  20. :src="img"
  21. @cropend="handleCircleCropend"
  22. style="width: 40vw"
  23. circled
  24. />
  25. </div>
  26. <img :src="circleImg" class="croppered" v-if="circleImg" />
  27. </div>
  28. <p v-if="circleImg">裁剪后图片信息:{{ circleInfo }}</p>
  29. </CollapseContainer>
  30. </PageWrapper>
  31. </template>
  32. <script lang="ts">
  33. import { defineComponent, ref } from 'vue';
  34. import { PageWrapper } from '/@/components/Page';
  35. import { CollapseContainer } from '/@/components/Container/index';
  36. import { CropperImage, CropperAvatar } from '/@/components/Cropper';
  37. import { uploadApi } from '/@/api/sys/upload';
  38. import img from '/@/assets/images/header.jpg';
  39. export default defineComponent({
  40. components: {
  41. PageWrapper,
  42. CropperImage,
  43. CollapseContainer,
  44. CropperAvatar,
  45. },
  46. setup() {
  47. const info = ref('');
  48. const cropperImg = ref('');
  49. const circleInfo = ref('');
  50. const circleImg = ref('');
  51. function handleCropend({ imgBase64, imgInfo }) {
  52. info.value = imgInfo;
  53. cropperImg.value = imgBase64;
  54. }
  55. function handleCircleCropend({ imgBase64, imgInfo }) {
  56. circleInfo.value = imgInfo;
  57. circleImg.value = imgBase64;
  58. }
  59. return {
  60. img,
  61. info,
  62. circleInfo,
  63. cropperImg,
  64. circleImg,
  65. handleCropend,
  66. handleCircleCropend,
  67. uploadApi,
  68. };
  69. },
  70. });
  71. </script>
  72. <style scoped>
  73. .container {
  74. display: flex;
  75. width: 100vw;
  76. align-items: center;
  77. }
  78. .cropper-container {
  79. width: 40vw;
  80. }
  81. .croppered {
  82. height: 360px;
  83. }
  84. p {
  85. margin: 10px;
  86. }
  87. </style>