From ad302a62408756ec11e53fbcc0e3a15e2683abba Mon Sep 17 00:00:00 2001 From: ShawnPhang Date: Mon, 9 Oct 2023 01:44:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20add=20Image=20Extraction=20=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + .../business/image-cutout/ImageCutout.vue | 23 +++- .../business/image-cutout/ImageExtraction.vue | 106 ++++++++++++++++++ .../modules/panel/wrap/ToolsListWrap.vue | 6 +- .../modules/settings/numberSlider.vue | 9 +- .../modules/widgets/wImage/wImageStyle.vue | 11 +- src/config.ts | 2 +- 7 files changed, 142 insertions(+), 16 deletions(-) create mode 100644 src/components/business/image-cutout/ImageExtraction.vue diff --git a/package.json b/package.json index 9cb29c3..99b1888 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ }, "dependencies": { "@palxp/color-picker": "^1.3.1", + "@palxp/image-extraction": "^1.2.4", "@scena/guides": "^0.18.1", "@webtoon/psd": "^0.4.0", "axios": "^0.21.1", diff --git a/src/components/business/image-cutout/ImageCutout.vue b/src/components/business/image-cutout/ImageCutout.vue index ebf3ad2..6d183e8 100644 --- a/src/components/business/image-cutout/ImageCutout.vue +++ b/src/components/business/image-cutout/ImageCutout.vue @@ -3,10 +3,10 @@ * @Date: 2023-07-11 23:50:22 * @Description: 抠图组件 * @LastEditors: ShawnPhang - * @LastEditTime: 2023-10-07 15:48:27 + * @LastEditTime: 2023-10-09 00:42:48 --> @@ -48,9 +50,10 @@ import api from '@/api' import Qiniu from '@/common/methods/QiNiu' import _config from '@/config' import { getImage } from '@/common/methods/getImgDetail' +import ImageExtraction from './ImageExtraction.vue' export default defineComponent({ - components: { uploader, UploadFilled, ElProgress }, + components: { uploader, UploadFilled, ElProgress, ImageExtraction }, emits: ['done'], setup(props, { emit }) { const store = useStore() @@ -65,6 +68,7 @@ export default defineComponent({ progressText: '', toolModel: true, loading: false, + matting: null, }) let fileName: string = 'unknow' let isRuning: boolean = false @@ -152,6 +156,14 @@ export default defineComponent({ handleClose() } + const edit = () => { + state.matting.open(state.rawImage, state.cutImage, (base64: any) => { + state.cutImage = base64 + state.percent = 0 + requestAnimationFrame(run) + }) + } + return { clear, download, @@ -161,6 +173,7 @@ export default defineComponent({ handleClose, ...toRefs(state), cutDone, + edit, } }, }) diff --git a/src/components/business/image-cutout/ImageExtraction.vue b/src/components/business/image-cutout/ImageExtraction.vue new file mode 100644 index 0000000..991aecc --- /dev/null +++ b/src/components/business/image-cutout/ImageExtraction.vue @@ -0,0 +1,106 @@ + + + + + + diff --git a/src/components/modules/panel/wrap/ToolsListWrap.vue b/src/components/modules/panel/wrap/ToolsListWrap.vue index d1cf434..7ee4506 100644 --- a/src/components/modules/panel/wrap/ToolsListWrap.vue +++ b/src/components/modules/panel/wrap/ToolsListWrap.vue @@ -3,7 +3,7 @@ * @Date: 2022-02-11 18:48:23 * @Description: 组件列表 * @LastEditors: ShawnPhang - * @LastEditTime: 2023-10-07 15:06:23 + * @LastEditTime: 2023-10-08 22:57:34 -->