diff --git a/components.d.ts b/components.d.ts index 27a04f0..88bba35 100644 --- a/components.d.ts +++ b/components.d.ts @@ -37,40 +37,55 @@ declare module 'vue' { AInputPassword: typeof import('ant-design-vue/es')['InputPassword'] AlbumCard: typeof import('./src/views/Album/Phoalbum/AlbumCard.vue')['default'] AlbumShareModal: typeof import('./src/views/Album/Phoalbum/AlbumShareModal.vue')['default'] + AList: typeof import('ant-design-vue/es')['List'] + AListItem: typeof import('ant-design-vue/es')['ListItem'] AllPhoto: typeof import('./src/views/Photograph/AllPhoto/AllPhoto.vue')['default'] AMenu: typeof import('ant-design-vue/es')['Menu'] AMenuItem: typeof import('ant-design-vue/es')['MenuItem'] AMenuItemGroup: typeof import('ant-design-vue/es')['MenuItemGroup'] AModal: typeof import('ant-design-vue/es')['Modal'] AnimatedNature: typeof import('./src/components/AnimatedNature/AnimatedNature.vue')['default'] + APagination: typeof import('ant-design-vue/es')['Pagination'] APopconfirm: typeof import('ant-design-vue/es')['Popconfirm'] APopover: typeof import('ant-design-vue/es')['Popover'] AProgress: typeof import('ant-design-vue/es')['Progress'] AQrcode: typeof import('ant-design-vue/es')['QRCode'] + ARadio: typeof import('ant-design-vue/es')['Radio'] + ARadioGroup: typeof import('ant-design-vue/es')['RadioGroup'] ARangePicker: typeof import('ant-design-vue/es')['RangePicker'] ASelect: typeof import('ant-design-vue/es')['Select'] ASelectOption: typeof import('ant-design-vue/es')['SelectOption'] + ASkeleton: typeof import('ant-design-vue/es')['Skeleton'] + ASpace: typeof import('ant-design-vue/es')['Space'] ASpin: typeof import('ant-design-vue/es')['Spin'] ASwitch: typeof import('ant-design-vue/es')['Switch'] ATable: typeof import('ant-design-vue/es')['Table'] ATabPane: typeof import('ant-design-vue/es')['TabPane'] ATabs: typeof import('ant-design-vue/es')['Tabs'] ATag: typeof import('ant-design-vue/es')['Tag'] + ATextarea: typeof import('ant-design-vue/es')['Textarea'] ATooltip: typeof import('ant-design-vue/es')['Tooltip'] AUpload: typeof import('ant-design-vue/es')['Upload'] AUploadDragger: typeof import('ant-design-vue/es')['UploadDragger'] BackgroundAnimation: typeof import('./src/components/BackgroundAnimation/BackgroundAnimation.vue')['default'] + BgColorsOutlined: typeof import('@ant-design/icons-vue')['BgColorsOutlined'] BlockOutlined: typeof import('@ant-design/icons-vue')['BlockOutlined'] BoxDog: typeof import('./src/components/BoxDog/BoxDog.vue')['default'] + CanvasEditor: typeof import('./src/components/ImageEditor/CanvasEditor.vue')['default'] Card3D: typeof import('./src/components/Card3D/Card3D.vue')['default'] CheckCard: typeof import('./src/components/CheckCard/CheckCard.vue')['default'] CheckCircleOutlined: typeof import('@ant-design/icons-vue')['CheckCircleOutlined'] + CheckOutlined: typeof import('@ant-design/icons-vue')['CheckOutlined'] + CloseCircleOutlined: typeof import('@ant-design/icons-vue')['CloseCircleOutlined'] CloseOutlined: typeof import('@ant-design/icons-vue')['CloseOutlined'] Clouds: typeof import('./src/components/Clouds/Clouds.vue')['default'] CloudUploadOutlined: typeof import('@ant-design/icons-vue')['CloudUploadOutlined'] CommentInput: typeof import('./src/components/CommentReply/src/CommentInput/CommentInput.vue')['default'] CommentList: typeof import('./src/components/CommentReply/src/CommentList/CommentList.vue')['default'] + CommentModal: typeof import('./src/views/Share/ShareViewList/CommentModal.vue')['default'] + CommentOutlined: typeof import('@ant-design/icons-vue')['CommentOutlined'] CommentReply: typeof import('./src/components/CommentReply/index.vue')['default'] + CommonPhoneUpload: typeof import('./src/views/Phone/CommonPhoneUpload/CommonPhoneUpload.vue')['default'] CompareImage: typeof import('./src/views/Upscale/CompareImage.vue')['default'] DeleteOutlined: typeof import('@ant-design/icons-vue')['DeleteOutlined'] DownloadOutlined: typeof import('@ant-design/icons-vue')['DownloadOutlined'] @@ -78,19 +93,21 @@ declare module 'vue' { DynamicTitle: typeof import('./src/components/DynamicTitle/DynamicTitle.vue')['default'] EditOutlined: typeof import('@ant-design/icons-vue')['EditOutlined'] EyeInvisibleOutlined: typeof import('@ant-design/icons-vue')['EyeInvisibleOutlined'] + EyeOutlined: typeof import('@ant-design/icons-vue')['EyeOutlined'] FileImageOutlined: typeof import('@ant-design/icons-vue')['FileImageOutlined'] Folder: typeof import('./src/components/Folder/Folder.vue')['default'] ForgetPage: typeof import('./src/views/Forget/ForgetPage.vue')['default'] GradientText: typeof import('./src/components/MyUI/GradientText/GradientText.vue')['default'] + ImageEditor: typeof import('./src/components/ImageEditor/ImageEditor.vue')['default'] ImageShare: typeof import('./src/views/Share/ImageShare/ImageShare.vue')['default'] ImageToolbar: typeof import('./src/components/ImageToolbar/ImageToolbar.vue')['default'] ImageUpload: typeof import('./src/components/ImageUpload/ImageUpload.vue')['default'] ImageWaterfallList: typeof import('./src/components/ImageWaterfallList/ImageWaterfallList.vue')['default'] - Index: typeof import('./src/views/Album/ThingAlbum/Index.vue')['default'] LandingPage: typeof import('./src/views/Landing/LandingPage.vue')['default'] LeftOutlined: typeof import('@ant-design/icons-vue')['LeftOutlined'] LinkOutlined: typeof import('@ant-design/icons-vue')['LinkOutlined'] LoadingGraphic: typeof import('./src/components/LoadingGraphic/LoadingGraphic.vue')['default'] + LoadingOutlined: typeof import('@ant-design/icons-vue')['LoadingOutlined'] LocationAlbumDetail: typeof import('./src/views/Album/LocationAlbum/LocationAlbumDetail.vue')['default'] LocationAlbumIndex: typeof import('./src/views/Album/LocationAlbum/LocationAlbumIndex.vue')['default'] LocationAlbumList: typeof import('./src/views/Album/LocationAlbum/LocationAlbumList.vue')['default'] @@ -113,6 +130,7 @@ declare module 'vue' { PhotoStack: typeof import('./src/components/PhotoStack/PhotoStack.vue')['default'] PlusOutlined: typeof import('@ant-design/icons-vue')['PlusOutlined'] PlusSquareOutlined: typeof import('@ant-design/icons-vue')['PlusSquareOutlined'] + Popover: typeof import('./src/components/MyUI/Popover/Popover.vue')['default'] QrcodeOutlined: typeof import('@ant-design/icons-vue')['QrcodeOutlined'] QRLogin: typeof import('./src/views/QRLogin/QRLogin.vue')['default'] QRLoginFooter: typeof import('./src/views/QRLogin/QRLoginFooter.vue')['default'] @@ -127,6 +145,7 @@ declare module 'vue' { RouterView: typeof import('vue-router')['RouterView'] SafetyOutlined: typeof import('@ant-design/icons-vue')['SafetyOutlined'] SearchOutlined: typeof import('@ant-design/icons-vue')['SearchOutlined'] + SendOutlined: typeof import('@ant-design/icons-vue')['SendOutlined'] ShareAltOutlined: typeof import('@ant-design/icons-vue')['ShareAltOutlined'] SharePhoneUpload: typeof import('./src/views/Phone/SharePhoneUpload/SharePhoneUpload.vue')['default'] ShareSidebar: typeof import('./src/views/Share/ShareViewList/ShareSidebar.vue')['default'] @@ -138,8 +157,10 @@ declare module 'vue' { ThingAlbumDetail: typeof import('./src/views/Album/ThingAlbum/ThingAlbumDetail.vue')['default'] ThingAlbumIndex: typeof import('./src/views/Album/ThingAlbum/ThingAlbumIndex.vue')['default'] ThingAlbumList: typeof import('./src/views/Album/ThingAlbum/ThingAlbumList.vue')['default'] + ToolPanel: typeof import('./src/components/ImageEditor/ToolPanel.vue')['default'] Tooltip: typeof import('./src/components/MyUI/Tooltip/Tooltip.vue')['default'] UploadImage: typeof import('./src/views/Upscale/UploadImage.vue')['default'] + UploadSetting: typeof import('./src/components/ImageUpload/UploadSetting.vue')['default'] Upscale: typeof import('./src/views/Upscale/index.vue')['default'] UpscalePhoneUpload: typeof import('./src/views/Phone/UpscalePhoneUpload/UpscalePhoneUpload.vue')['default'] UserCenterAnalysis: typeof import('./src/views/User/PersonalCenter/components/UserCenterAnalysis/UserCenterAnalysis.vue')['default'] @@ -151,5 +172,6 @@ declare module 'vue' { UserInfoCard: typeof import('./src/components/CommentReply/src/UserInfoCard/UserInfoCard.vue')['default'] UserOutlined: typeof import('@ant-design/icons-vue')['UserOutlined'] VueCompareImage: typeof import('./src/components/VueCompareImage/VueCompareImage.vue')['default'] + WarningOutlined: typeof import('@ant-design/icons-vue')['WarningOutlined'] } } diff --git a/package.json b/package.json index a15f28f..98cf62a 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "@tensorflow/tfjs-core": "^4.22.0", "@types/animejs": "^3.1.13", "@types/crypto-js": "^4.2.2", + "@types/fabric": "^5.3.10", "@types/json-stringify-safe": "^5.0.3", "@types/node": "^22.13.5", "@types/nprogress": "^0.2.3", @@ -36,7 +37,7 @@ "@vuepic/vue-datepicker": "^11.0.1", "@vueuse/core": "^12.7.0", "@vueuse/integrations": "^12.7.0", - "alova": "^3.2.8", + "alova": "^3.2.9", "animejs": "^3.2.2", "ant-design-vue": "^4.2.6", "axios": "^1.8.1", @@ -46,6 +47,7 @@ "echarts": "^5.6.0", "eslint": "9.21.0", "exifr": "^7.1.3", + "fabric": "^6.6.1", "go-captcha-vue": "^2.0.6", "gsap": "^3.12.7", "jsencrypt": "^3.3.2", @@ -58,11 +60,11 @@ "opencv-qr": "^0.7.0", "pinia": "^3.0.1", "pinia-plugin-persistedstate-2": "^2.0.28", - "qrcode": "^1", + "qr-scanner-wechat": "^0.1.3", "rimraf": "^6.0.1", "seedrandom": "^3.0.5", "swiper": "^11.2.4", - "unplugin-auto-import": "^19.1.0", + "unplugin-auto-import": "^19.1.1", "vite-plugin-compression": "^0.5.1", "vite-plugin-html": "^3.2.2", "vite-plugin-node-polyfills": "^0.23.0", @@ -70,7 +72,6 @@ "vue-dompurify-html": "^5.2.0", "vue-i18n": "^11.1.1", "vue-router": "^4.5.0", - "vue3-justified-layout": "^0.0.6", "ws": "^8.18.1" }, "devDependencies": { @@ -81,7 +82,7 @@ "sass": "^1.85.1", "typescript": "^5.7.3", "typescript-eslint": "^8.25.0", - "unplugin-vue-components": "^28.4.0", + "unplugin-vue-components": "^28.4.1", "vite": "^6.2.0", "vite-plugin-bundle-obfuscator": "1.4.1", "vite-plugin-chunk-split": "^0.5.0", diff --git a/public/caffemodel/detect.caffemodel b/public/caffemodel/detect.caffemodel deleted file mode 100644 index 453126c..0000000 Binary files a/public/caffemodel/detect.caffemodel and /dev/null differ diff --git a/public/caffemodel/detect.prototxt b/public/caffemodel/detect.prototxt deleted file mode 100644 index bd2417c..0000000 --- a/public/caffemodel/detect.prototxt +++ /dev/null @@ -1,2716 +0,0 @@ -layer { - name: "data" - type: "Input" - top: "data" - input_param { - shape { - dim: 1 - dim: 1 - dim: 384 - dim: 384 - } - } -} -layer { - name: "data/bn" - type: "BatchNorm" - bottom: "data" - top: "data" - param { - lr_mult: 0.0 - decay_mult: 0.0 - } - param { - lr_mult: 0.0 - decay_mult: 0.0 - } - param { - lr_mult: 0.0 - decay_mult: 0.0 - } -} -layer { - name: "data/bn/scale" - type: "Scale" - bottom: "data" - top: "data" - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - scale_param { - filler { - type: "constant" - value: 1.0 - } - bias_term: true - bias_filler { - type: "constant" - value: 0.0 - } - } -} -layer { - name: "stage1" - type: "Convolution" - bottom: "data" - top: "stage1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - convolution_param { - num_output: 24 - bias_term: true - pad: 1 - kernel_size: 3 - group: 1 - stride: 2 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage1/bn" - type: "BatchNorm" - bottom: "stage1" - top: "stage1" - param { - lr_mult: 0.0 - decay_mult: 0.0 - } - param { - lr_mult: 0.0 - decay_mult: 0.0 - } - param { - lr_mult: 0.0 - decay_mult: 0.0 - } -} -layer { - name: "stage1/bn/scale" - type: "Scale" - bottom: "stage1" - top: "stage1" - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - scale_param { - filler { - type: "constant" - value: 1.0 - } - bias_term: true - bias_filler { - type: "constant" - value: 0.0 - } - } -} -layer { - name: "stage1/relu" - type: "ReLU" - bottom: "stage1" - top: "stage1" -} -layer { - name: "stage2" - type: "Pooling" - bottom: "stage1" - top: "stage2" - pooling_param { - pool: MAX - kernel_size: 3 - stride: 2 - pad: 0 - } -} -layer { - name: "stage3_1/conv1" - type: "Convolution" - bottom: "stage2" - top: "stage3_1/conv1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 16 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage3_1/conv1/relu" - type: "ReLU" - bottom: "stage3_1/conv1" - top: "stage3_1/conv1" -} -layer { - name: "stage3_1/conv2" - type: "Convolution" - bottom: "stage3_1/conv1" - top: "stage3_1/conv2" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 16 - pad: 1 - kernel_size: 3 - group: 16 - stride: 2 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage3_1/conv3" - type: "Convolution" - bottom: "stage3_1/conv2" - top: "stage3_1/conv3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 64 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage3_1/relu" - type: "ReLU" - bottom: "stage3_1/conv3" - top: "stage3_1/conv3" -} -layer { - name: "stage3_2/conv1" - type: "Convolution" - bottom: "stage3_1/conv3" - top: "stage3_2/conv1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 16 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage3_2/conv1/relu" - type: "ReLU" - bottom: "stage3_2/conv1" - top: "stage3_2/conv1" -} -layer { - name: "stage3_2/conv2" - type: "Convolution" - bottom: "stage3_2/conv1" - top: "stage3_2/conv2" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 16 - pad: 1 - kernel_size: 3 - group: 16 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage3_2/conv3" - type: "Convolution" - bottom: "stage3_2/conv2" - top: "stage3_2/conv3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 64 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage3_2/sum" - type: "Eltwise" - bottom: "stage3_1/conv3" - bottom: "stage3_2/conv3" - top: "stage3_2/sum" - eltwise_param { - operation: SUM - } -} -layer { - name: "stage3_2/relu" - type: "ReLU" - bottom: "stage3_2/sum" - top: "stage3_2/sum" -} -layer { - name: "stage3_3/conv1" - type: "Convolution" - bottom: "stage3_2/sum" - top: "stage3_3/conv1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 16 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage3_3/conv1/relu" - type: "ReLU" - bottom: "stage3_3/conv1" - top: "stage3_3/conv1" -} -layer { - name: "stage3_3/conv2" - type: "Convolution" - bottom: "stage3_3/conv1" - top: "stage3_3/conv2" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 16 - pad: 1 - kernel_size: 3 - group: 16 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage3_3/conv3" - type: "Convolution" - bottom: "stage3_3/conv2" - top: "stage3_3/conv3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 64 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage3_3/sum" - type: "Eltwise" - bottom: "stage3_2/sum" - bottom: "stage3_3/conv3" - top: "stage3_3/sum" - eltwise_param { - operation: SUM - } -} -layer { - name: "stage3_3/relu" - type: "ReLU" - bottom: "stage3_3/sum" - top: "stage3_3/sum" -} -layer { - name: "stage3_4/conv1" - type: "Convolution" - bottom: "stage3_3/sum" - top: "stage3_4/conv1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 16 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage3_4/conv1/relu" - type: "ReLU" - bottom: "stage3_4/conv1" - top: "stage3_4/conv1" -} -layer { - name: "stage3_4/conv2" - type: "Convolution" - bottom: "stage3_4/conv1" - top: "stage3_4/conv2" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 16 - pad: 1 - kernel_size: 3 - group: 16 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage3_4/conv3" - type: "Convolution" - bottom: "stage3_4/conv2" - top: "stage3_4/conv3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 64 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage3_4/sum" - type: "Eltwise" - bottom: "stage3_3/sum" - bottom: "stage3_4/conv3" - top: "stage3_4/sum" - eltwise_param { - operation: SUM - } -} -layer { - name: "stage3_4/relu" - type: "ReLU" - bottom: "stage3_4/sum" - top: "stage3_4/sum" -} -layer { - name: "stage4_1/conv1" - type: "Convolution" - bottom: "stage3_4/sum" - top: "stage4_1/conv1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_1/conv1/relu" - type: "ReLU" - bottom: "stage4_1/conv1" - top: "stage4_1/conv1" -} -layer { - name: "stage4_1/conv2" - type: "Convolution" - bottom: "stage4_1/conv1" - top: "stage4_1/conv2" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 1 - kernel_size: 3 - group: 32 - stride: 2 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_1/conv3" - type: "Convolution" - bottom: "stage4_1/conv2" - top: "stage4_1/conv3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 128 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_1/relu" - type: "ReLU" - bottom: "stage4_1/conv3" - top: "stage4_1/conv3" -} -layer { - name: "stage4_2/conv1" - type: "Convolution" - bottom: "stage4_1/conv3" - top: "stage4_2/conv1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_2/conv1/relu" - type: "ReLU" - bottom: "stage4_2/conv1" - top: "stage4_2/conv1" -} -layer { - name: "stage4_2/conv2" - type: "Convolution" - bottom: "stage4_2/conv1" - top: "stage4_2/conv2" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 1 - kernel_size: 3 - group: 32 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_2/conv3" - type: "Convolution" - bottom: "stage4_2/conv2" - top: "stage4_2/conv3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 128 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_2/sum" - type: "Eltwise" - bottom: "stage4_1/conv3" - bottom: "stage4_2/conv3" - top: "stage4_2/sum" - eltwise_param { - operation: SUM - } -} -layer { - name: "stage4_2/relu" - type: "ReLU" - bottom: "stage4_2/sum" - top: "stage4_2/sum" -} -layer { - name: "stage4_3/conv1" - type: "Convolution" - bottom: "stage4_2/sum" - top: "stage4_3/conv1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_3/conv1/relu" - type: "ReLU" - bottom: "stage4_3/conv1" - top: "stage4_3/conv1" -} -layer { - name: "stage4_3/conv2" - type: "Convolution" - bottom: "stage4_3/conv1" - top: "stage4_3/conv2" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 1 - kernel_size: 3 - group: 32 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_3/conv3" - type: "Convolution" - bottom: "stage4_3/conv2" - top: "stage4_3/conv3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 128 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_3/sum" - type: "Eltwise" - bottom: "stage4_2/sum" - bottom: "stage4_3/conv3" - top: "stage4_3/sum" - eltwise_param { - operation: SUM - } -} -layer { - name: "stage4_3/relu" - type: "ReLU" - bottom: "stage4_3/sum" - top: "stage4_3/sum" -} -layer { - name: "stage4_4/conv1" - type: "Convolution" - bottom: "stage4_3/sum" - top: "stage4_4/conv1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_4/conv1/relu" - type: "ReLU" - bottom: "stage4_4/conv1" - top: "stage4_4/conv1" -} -layer { - name: "stage4_4/conv2" - type: "Convolution" - bottom: "stage4_4/conv1" - top: "stage4_4/conv2" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 1 - kernel_size: 3 - group: 32 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_4/conv3" - type: "Convolution" - bottom: "stage4_4/conv2" - top: "stage4_4/conv3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 128 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_4/sum" - type: "Eltwise" - bottom: "stage4_3/sum" - bottom: "stage4_4/conv3" - top: "stage4_4/sum" - eltwise_param { - operation: SUM - } -} -layer { - name: "stage4_4/relu" - type: "ReLU" - bottom: "stage4_4/sum" - top: "stage4_4/sum" -} -layer { - name: "stage4_5/conv1" - type: "Convolution" - bottom: "stage4_4/sum" - top: "stage4_5/conv1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_5/conv1/relu" - type: "ReLU" - bottom: "stage4_5/conv1" - top: "stage4_5/conv1" -} -layer { - name: "stage4_5/conv2" - type: "Convolution" - bottom: "stage4_5/conv1" - top: "stage4_5/conv2" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 1 - kernel_size: 3 - group: 32 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_5/conv3" - type: "Convolution" - bottom: "stage4_5/conv2" - top: "stage4_5/conv3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 128 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_5/sum" - type: "Eltwise" - bottom: "stage4_4/sum" - bottom: "stage4_5/conv3" - top: "stage4_5/sum" - eltwise_param { - operation: SUM - } -} -layer { - name: "stage4_5/relu" - type: "ReLU" - bottom: "stage4_5/sum" - top: "stage4_5/sum" -} -layer { - name: "stage4_6/conv1" - type: "Convolution" - bottom: "stage4_5/sum" - top: "stage4_6/conv1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_6/conv1/relu" - type: "ReLU" - bottom: "stage4_6/conv1" - top: "stage4_6/conv1" -} -layer { - name: "stage4_6/conv2" - type: "Convolution" - bottom: "stage4_6/conv1" - top: "stage4_6/conv2" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 1 - kernel_size: 3 - group: 32 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_6/conv3" - type: "Convolution" - bottom: "stage4_6/conv2" - top: "stage4_6/conv3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 128 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_6/sum" - type: "Eltwise" - bottom: "stage4_5/sum" - bottom: "stage4_6/conv3" - top: "stage4_6/sum" - eltwise_param { - operation: SUM - } -} -layer { - name: "stage4_6/relu" - type: "ReLU" - bottom: "stage4_6/sum" - top: "stage4_6/sum" -} -layer { - name: "stage4_7/conv1" - type: "Convolution" - bottom: "stage4_6/sum" - top: "stage4_7/conv1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_7/conv1/relu" - type: "ReLU" - bottom: "stage4_7/conv1" - top: "stage4_7/conv1" -} -layer { - name: "stage4_7/conv2" - type: "Convolution" - bottom: "stage4_7/conv1" - top: "stage4_7/conv2" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 1 - kernel_size: 3 - group: 32 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_7/conv3" - type: "Convolution" - bottom: "stage4_7/conv2" - top: "stage4_7/conv3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 128 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_7/sum" - type: "Eltwise" - bottom: "stage4_6/sum" - bottom: "stage4_7/conv3" - top: "stage4_7/sum" - eltwise_param { - operation: SUM - } -} -layer { - name: "stage4_7/relu" - type: "ReLU" - bottom: "stage4_7/sum" - top: "stage4_7/sum" -} -layer { - name: "stage4_8/conv1" - type: "Convolution" - bottom: "stage4_7/sum" - top: "stage4_8/conv1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_8/conv1/relu" - type: "ReLU" - bottom: "stage4_8/conv1" - top: "stage4_8/conv1" -} -layer { - name: "stage4_8/conv2" - type: "Convolution" - bottom: "stage4_8/conv1" - top: "stage4_8/conv2" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 1 - kernel_size: 3 - group: 32 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_8/conv3" - type: "Convolution" - bottom: "stage4_8/conv2" - top: "stage4_8/conv3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 128 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage4_8/sum" - type: "Eltwise" - bottom: "stage4_7/sum" - bottom: "stage4_8/conv3" - top: "stage4_8/sum" - eltwise_param { - operation: SUM - } -} -layer { - name: "stage4_8/relu" - type: "ReLU" - bottom: "stage4_8/sum" - top: "stage4_8/sum" -} -layer { - name: "stage5_1/conv1" - type: "Convolution" - bottom: "stage4_8/sum" - top: "stage5_1/conv1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage5_1/conv1/relu" - type: "ReLU" - bottom: "stage5_1/conv1" - top: "stage5_1/conv1" -} -layer { - name: "stage5_1/conv2" - type: "Convolution" - bottom: "stage5_1/conv1" - top: "stage5_1/conv2" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 2 - kernel_size: 3 - group: 32 - stride: 2 - weight_filler { - type: "msra" - } - dilation: 2 - } -} -layer { - name: "stage5_1/conv3" - type: "Convolution" - bottom: "stage5_1/conv2" - top: "stage5_1/conv3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 128 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage5_1/relu" - type: "ReLU" - bottom: "stage5_1/conv3" - top: "stage5_1/conv3" -} -layer { - name: "stage5_2/conv1" - type: "Convolution" - bottom: "stage5_1/conv3" - top: "stage5_2/conv1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage5_2/conv1/relu" - type: "ReLU" - bottom: "stage5_2/conv1" - top: "stage5_2/conv1" -} -layer { - name: "stage5_2/conv2" - type: "Convolution" - bottom: "stage5_2/conv1" - top: "stage5_2/conv2" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 2 - kernel_size: 3 - group: 32 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 2 - } -} -layer { - name: "stage5_2/conv3" - type: "Convolution" - bottom: "stage5_2/conv2" - top: "stage5_2/conv3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 128 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage5_2/sum" - type: "Eltwise" - bottom: "stage5_1/conv3" - bottom: "stage5_2/conv3" - top: "stage5_2/sum" - eltwise_param { - operation: SUM - } -} -layer { - name: "stage5_2/relu" - type: "ReLU" - bottom: "stage5_2/sum" - top: "stage5_2/sum" -} -layer { - name: "stage5_3/conv1" - type: "Convolution" - bottom: "stage5_2/sum" - top: "stage5_3/conv1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage5_3/conv1/relu" - type: "ReLU" - bottom: "stage5_3/conv1" - top: "stage5_3/conv1" -} -layer { - name: "stage5_3/conv2" - type: "Convolution" - bottom: "stage5_3/conv1" - top: "stage5_3/conv2" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 2 - kernel_size: 3 - group: 32 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 2 - } -} -layer { - name: "stage5_3/conv3" - type: "Convolution" - bottom: "stage5_3/conv2" - top: "stage5_3/conv3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 128 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage5_3/sum" - type: "Eltwise" - bottom: "stage5_2/sum" - bottom: "stage5_3/conv3" - top: "stage5_3/sum" - eltwise_param { - operation: SUM - } -} -layer { - name: "stage5_3/relu" - type: "ReLU" - bottom: "stage5_3/sum" - top: "stage5_3/sum" -} -layer { - name: "stage5_4/conv1" - type: "Convolution" - bottom: "stage5_3/sum" - top: "stage5_4/conv1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage5_4/conv1/relu" - type: "ReLU" - bottom: "stage5_4/conv1" - top: "stage5_4/conv1" -} -layer { - name: "stage5_4/conv2" - type: "Convolution" - bottom: "stage5_4/conv1" - top: "stage5_4/conv2" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 2 - kernel_size: 3 - group: 32 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 2 - } -} -layer { - name: "stage5_4/conv3" - type: "Convolution" - bottom: "stage5_4/conv2" - top: "stage5_4/conv3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 128 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage5_4/sum" - type: "Eltwise" - bottom: "stage5_3/sum" - bottom: "stage5_4/conv3" - top: "stage5_4/sum" - eltwise_param { - operation: SUM - } -} -layer { - name: "stage5_4/relu" - type: "ReLU" - bottom: "stage5_4/sum" - top: "stage5_4/sum" -} -layer { - name: "stage6_1/conv4" - type: "Convolution" - bottom: "stage5_4/sum" - top: "stage6_1/conv4" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 128 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage6_1/conv1" - type: "Convolution" - bottom: "stage5_4/sum" - top: "stage6_1/conv1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage6_1/conv1/relu" - type: "ReLU" - bottom: "stage6_1/conv1" - top: "stage6_1/conv1" -} -layer { - name: "stage6_1/conv2" - type: "Convolution" - bottom: "stage6_1/conv1" - top: "stage6_1/conv2" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 2 - kernel_size: 3 - group: 32 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 2 - } -} -layer { - name: "stage6_1/conv3" - type: "Convolution" - bottom: "stage6_1/conv2" - top: "stage6_1/conv3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 128 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage6_1/sum" - type: "Eltwise" - bottom: "stage6_1/conv4" - bottom: "stage6_1/conv3" - top: "stage6_1/sum" - eltwise_param { - operation: SUM - } -} -layer { - name: "stage6_1/relu" - type: "ReLU" - bottom: "stage6_1/sum" - top: "stage6_1/sum" -} -layer { - name: "stage6_2/conv1" - type: "Convolution" - bottom: "stage6_1/sum" - top: "stage6_2/conv1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage6_2/conv1/relu" - type: "ReLU" - bottom: "stage6_2/conv1" - top: "stage6_2/conv1" -} -layer { - name: "stage6_2/conv2" - type: "Convolution" - bottom: "stage6_2/conv1" - top: "stage6_2/conv2" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 2 - kernel_size: 3 - group: 32 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 2 - } -} -layer { - name: "stage6_2/conv3" - type: "Convolution" - bottom: "stage6_2/conv2" - top: "stage6_2/conv3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 128 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage6_2/sum" - type: "Eltwise" - bottom: "stage6_1/sum" - bottom: "stage6_2/conv3" - top: "stage6_2/sum" - eltwise_param { - operation: SUM - } -} -layer { - name: "stage6_2/relu" - type: "ReLU" - bottom: "stage6_2/sum" - top: "stage6_2/sum" -} -layer { - name: "stage7_1/conv4" - type: "Convolution" - bottom: "stage6_2/sum" - top: "stage7_1/conv4" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 128 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage7_1/conv1" - type: "Convolution" - bottom: "stage6_2/sum" - top: "stage7_1/conv1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage7_1/conv1/relu" - type: "ReLU" - bottom: "stage7_1/conv1" - top: "stage7_1/conv1" -} -layer { - name: "stage7_1/conv2" - type: "Convolution" - bottom: "stage7_1/conv1" - top: "stage7_1/conv2" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 2 - kernel_size: 3 - group: 32 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 2 - } -} -layer { - name: "stage7_1/conv3" - type: "Convolution" - bottom: "stage7_1/conv2" - top: "stage7_1/conv3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 128 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage7_1/sum" - type: "Eltwise" - bottom: "stage7_1/conv4" - bottom: "stage7_1/conv3" - top: "stage7_1/sum" - eltwise_param { - operation: SUM - } -} -layer { - name: "stage7_1/relu" - type: "ReLU" - bottom: "stage7_1/sum" - top: "stage7_1/sum" -} -layer { - name: "stage7_2/conv1" - type: "Convolution" - bottom: "stage7_1/sum" - top: "stage7_2/conv1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage7_2/conv1/relu" - type: "ReLU" - bottom: "stage7_2/conv1" - top: "stage7_2/conv1" -} -layer { - name: "stage7_2/conv2" - type: "Convolution" - bottom: "stage7_2/conv1" - top: "stage7_2/conv2" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 2 - kernel_size: 3 - group: 32 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 2 - } -} -layer { - name: "stage7_2/conv3" - type: "Convolution" - bottom: "stage7_2/conv2" - top: "stage7_2/conv3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 128 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage7_2/sum" - type: "Eltwise" - bottom: "stage7_1/sum" - bottom: "stage7_2/conv3" - top: "stage7_2/sum" - eltwise_param { - operation: SUM - } -} -layer { - name: "stage7_2/relu" - type: "ReLU" - bottom: "stage7_2/sum" - top: "stage7_2/sum" -} -layer { - name: "stage8_1/conv4" - type: "Convolution" - bottom: "stage7_2/sum" - top: "stage8_1/conv4" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 128 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage8_1/conv1" - type: "Convolution" - bottom: "stage7_2/sum" - top: "stage8_1/conv1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage8_1/conv1/relu" - type: "ReLU" - bottom: "stage8_1/conv1" - top: "stage8_1/conv1" -} -layer { - name: "stage8_1/conv2" - type: "Convolution" - bottom: "stage8_1/conv1" - top: "stage8_1/conv2" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 2 - kernel_size: 3 - group: 32 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 2 - } -} -layer { - name: "stage8_1/conv3" - type: "Convolution" - bottom: "stage8_1/conv2" - top: "stage8_1/conv3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 128 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage8_1/sum" - type: "Eltwise" - bottom: "stage8_1/conv4" - bottom: "stage8_1/conv3" - top: "stage8_1/sum" - eltwise_param { - operation: SUM - } -} -layer { - name: "stage8_1/relu" - type: "ReLU" - bottom: "stage8_1/sum" - top: "stage8_1/sum" -} -layer { - name: "stage8_2/conv1" - type: "Convolution" - bottom: "stage8_1/sum" - top: "stage8_2/conv1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage8_2/conv1/relu" - type: "ReLU" - bottom: "stage8_2/conv1" - top: "stage8_2/conv1" -} -layer { - name: "stage8_2/conv2" - type: "Convolution" - bottom: "stage8_2/conv1" - top: "stage8_2/conv2" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 32 - pad: 2 - kernel_size: 3 - group: 32 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 2 - } -} -layer { - name: "stage8_2/conv3" - type: "Convolution" - bottom: "stage8_2/conv2" - top: "stage8_2/conv3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - convolution_param { - num_output: 128 - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "stage8_2/sum" - type: "Eltwise" - bottom: "stage8_1/sum" - bottom: "stage8_2/conv3" - top: "stage8_2/sum" - eltwise_param { - operation: SUM - } -} -layer { - name: "stage8_2/relu" - type: "ReLU" - bottom: "stage8_2/sum" - top: "stage8_2/sum" -} -layer { - name: "cls1/conv" - type: "Convolution" - bottom: "stage4_8/sum" - top: "cls1/conv" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - convolution_param { - num_output: 12 - bias_term: true - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "cls1/permute" - type: "Permute" - bottom: "cls1/conv" - top: "cls1/permute" - permute_param { - order: 0 - order: 2 - order: 3 - order: 1 - } -} -layer { - name: "cls1/flatten" - type: "Flatten" - bottom: "cls1/permute" - top: "cls1/flatten" - flatten_param { - axis: 1 - } -} -layer { - name: "loc1/conv" - type: "Convolution" - bottom: "stage4_8/sum" - top: "loc1/conv" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - convolution_param { - num_output: 24 - bias_term: true - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "loc1/permute" - type: "Permute" - bottom: "loc1/conv" - top: "loc1/permute" - permute_param { - order: 0 - order: 2 - order: 3 - order: 1 - } -} -layer { - name: "loc1/flatten" - type: "Flatten" - bottom: "loc1/permute" - top: "loc1/flatten" - flatten_param { - axis: 1 - } -} -layer { - name: "stage4_8/sum/prior_box" - type: "PriorBox" - bottom: "stage4_8/sum" - bottom: "data" - top: "stage4_8/sum/prior_box" - prior_box_param { - min_size: 50.0 - max_size: 100.0 - aspect_ratio: 2.0 - aspect_ratio: 0.5 - aspect_ratio: 3.0 - aspect_ratio: 0.3333333432674408 - flip: false - clip: false - variance: 0.10000000149011612 - variance: 0.10000000149011612 - variance: 0.20000000298023224 - variance: 0.20000000298023224 - step: 16.0 - } -} -layer { - name: "cls2/conv" - type: "Convolution" - bottom: "stage5_4/sum" - top: "cls2/conv" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - convolution_param { - num_output: 12 - bias_term: true - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "cls2/permute" - type: "Permute" - bottom: "cls2/conv" - top: "cls2/permute" - permute_param { - order: 0 - order: 2 - order: 3 - order: 1 - } -} -layer { - name: "cls2/flatten" - type: "Flatten" - bottom: "cls2/permute" - top: "cls2/flatten" - flatten_param { - axis: 1 - } -} -layer { - name: "loc2/conv" - type: "Convolution" - bottom: "stage5_4/sum" - top: "loc2/conv" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - convolution_param { - num_output: 24 - bias_term: true - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "loc2/permute" - type: "Permute" - bottom: "loc2/conv" - top: "loc2/permute" - permute_param { - order: 0 - order: 2 - order: 3 - order: 1 - } -} -layer { - name: "loc2/flatten" - type: "Flatten" - bottom: "loc2/permute" - top: "loc2/flatten" - flatten_param { - axis: 1 - } -} -layer { - name: "stage5_4/sum/prior_box" - type: "PriorBox" - bottom: "stage5_4/sum" - bottom: "data" - top: "stage5_4/sum/prior_box" - prior_box_param { - min_size: 100.0 - max_size: 150.0 - aspect_ratio: 2.0 - aspect_ratio: 0.5 - aspect_ratio: 3.0 - aspect_ratio: 0.3333333432674408 - flip: false - clip: false - variance: 0.10000000149011612 - variance: 0.10000000149011612 - variance: 0.20000000298023224 - variance: 0.20000000298023224 - step: 32.0 - } -} -layer { - name: "cls3/conv" - type: "Convolution" - bottom: "stage6_2/sum" - top: "cls3/conv" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - convolution_param { - num_output: 12 - bias_term: true - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "cls3/permute" - type: "Permute" - bottom: "cls3/conv" - top: "cls3/permute" - permute_param { - order: 0 - order: 2 - order: 3 - order: 1 - } -} -layer { - name: "cls3/flatten" - type: "Flatten" - bottom: "cls3/permute" - top: "cls3/flatten" - flatten_param { - axis: 1 - } -} -layer { - name: "loc3/conv" - type: "Convolution" - bottom: "stage6_2/sum" - top: "loc3/conv" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - convolution_param { - num_output: 24 - bias_term: true - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "loc3/permute" - type: "Permute" - bottom: "loc3/conv" - top: "loc3/permute" - permute_param { - order: 0 - order: 2 - order: 3 - order: 1 - } -} -layer { - name: "loc3/flatten" - type: "Flatten" - bottom: "loc3/permute" - top: "loc3/flatten" - flatten_param { - axis: 1 - } -} -layer { - name: "stage6_2/sum/prior_box" - type: "PriorBox" - bottom: "stage6_2/sum" - bottom: "data" - top: "stage6_2/sum/prior_box" - prior_box_param { - min_size: 150.0 - max_size: 200.0 - aspect_ratio: 2.0 - aspect_ratio: 0.5 - aspect_ratio: 3.0 - aspect_ratio: 0.3333333432674408 - flip: false - clip: false - variance: 0.10000000149011612 - variance: 0.10000000149011612 - variance: 0.20000000298023224 - variance: 0.20000000298023224 - step: 32.0 - } -} -layer { - name: "cls4/conv" - type: "Convolution" - bottom: "stage7_2/sum" - top: "cls4/conv" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - convolution_param { - num_output: 12 - bias_term: true - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "cls4/permute" - type: "Permute" - bottom: "cls4/conv" - top: "cls4/permute" - permute_param { - order: 0 - order: 2 - order: 3 - order: 1 - } -} -layer { - name: "cls4/flatten" - type: "Flatten" - bottom: "cls4/permute" - top: "cls4/flatten" - flatten_param { - axis: 1 - } -} -layer { - name: "loc4/conv" - type: "Convolution" - bottom: "stage7_2/sum" - top: "loc4/conv" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - convolution_param { - num_output: 24 - bias_term: true - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "loc4/permute" - type: "Permute" - bottom: "loc4/conv" - top: "loc4/permute" - permute_param { - order: 0 - order: 2 - order: 3 - order: 1 - } -} -layer { - name: "loc4/flatten" - type: "Flatten" - bottom: "loc4/permute" - top: "loc4/flatten" - flatten_param { - axis: 1 - } -} -layer { - name: "stage7_2/sum/prior_box" - type: "PriorBox" - bottom: "stage7_2/sum" - bottom: "data" - top: "stage7_2/sum/prior_box" - prior_box_param { - min_size: 200.0 - max_size: 300.0 - aspect_ratio: 2.0 - aspect_ratio: 0.5 - aspect_ratio: 3.0 - aspect_ratio: 0.3333333432674408 - flip: false - clip: false - variance: 0.10000000149011612 - variance: 0.10000000149011612 - variance: 0.20000000298023224 - variance: 0.20000000298023224 - step: 32.0 - } -} -layer { - name: "cls5/conv" - type: "Convolution" - bottom: "stage8_2/sum" - top: "cls5/conv" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - convolution_param { - num_output: 12 - bias_term: true - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "cls5/permute" - type: "Permute" - bottom: "cls5/conv" - top: "cls5/permute" - permute_param { - order: 0 - order: 2 - order: 3 - order: 1 - } -} -layer { - name: "cls5/flatten" - type: "Flatten" - bottom: "cls5/permute" - top: "cls5/flatten" - flatten_param { - axis: 1 - } -} -layer { - name: "loc5/conv" - type: "Convolution" - bottom: "stage8_2/sum" - top: "loc5/conv" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - convolution_param { - num_output: 24 - bias_term: true - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - dilation: 1 - } -} -layer { - name: "loc5/permute" - type: "Permute" - bottom: "loc5/conv" - top: "loc5/permute" - permute_param { - order: 0 - order: 2 - order: 3 - order: 1 - } -} -layer { - name: "loc5/flatten" - type: "Flatten" - bottom: "loc5/permute" - top: "loc5/flatten" - flatten_param { - axis: 1 - } -} -layer { - name: "stage8_2/sum/prior_box" - type: "PriorBox" - bottom: "stage8_2/sum" - bottom: "data" - top: "stage8_2/sum/prior_box" - prior_box_param { - min_size: 300.0 - max_size: 400.0 - aspect_ratio: 2.0 - aspect_ratio: 0.5 - aspect_ratio: 3.0 - aspect_ratio: 0.3333333432674408 - flip: false - clip: false - variance: 0.10000000149011612 - variance: 0.10000000149011612 - variance: 0.20000000298023224 - variance: 0.20000000298023224 - step: 32.0 - } -} -layer { - name: "mbox_conf" - type: "Concat" - bottom: "cls1/flatten" - bottom: "cls2/flatten" - bottom: "cls3/flatten" - bottom: "cls4/flatten" - bottom: "cls5/flatten" - top: "mbox_conf" - concat_param { - axis: 1 - } -} -layer { - name: "mbox_loc" - type: "Concat" - bottom: "loc1/flatten" - bottom: "loc2/flatten" - bottom: "loc3/flatten" - bottom: "loc4/flatten" - bottom: "loc5/flatten" - top: "mbox_loc" - concat_param { - axis: 1 - } -} -layer { - name: "mbox_priorbox" - type: "Concat" - bottom: "stage4_8/sum/prior_box" - bottom: "stage5_4/sum/prior_box" - bottom: "stage6_2/sum/prior_box" - bottom: "stage7_2/sum/prior_box" - bottom: "stage8_2/sum/prior_box" - top: "mbox_priorbox" - concat_param { - axis: 2 - } -} -layer { - name: "mbox_conf_reshape" - type: "Reshape" - bottom: "mbox_conf" - top: "mbox_conf_reshape" - reshape_param { - shape { - dim: 0 - dim: -1 - dim: 2 - } - } -} -layer { - name: "mbox_conf_softmax" - type: "Softmax" - bottom: "mbox_conf_reshape" - top: "mbox_conf_softmax" - softmax_param { - axis: 2 - } -} -layer { - name: "mbox_conf_flatten" - type: "Flatten" - bottom: "mbox_conf_softmax" - top: "mbox_conf_flatten" - flatten_param { - axis: 1 - } -} -layer { - name: "detection_output" - type: "DetectionOutput" - bottom: "mbox_loc" - bottom: "mbox_conf_flatten" - bottom: "mbox_priorbox" - top: "detection_output" - detection_output_param { - num_classes: 2 - share_location: true - background_label_id: 0 - nms_param { - nms_threshold: 0.44999998807907104 - top_k: 100 - } - code_type: CENTER_SIZE - keep_top_k: 100 - confidence_threshold: 0.20000000298023224 - } -} diff --git a/public/caffemodel/sr.caffemodel b/public/caffemodel/sr.caffemodel deleted file mode 100644 index 168b54d..0000000 Binary files a/public/caffemodel/sr.caffemodel and /dev/null differ diff --git a/public/caffemodel/sr.prototxt b/public/caffemodel/sr.prototxt deleted file mode 100644 index e85caa1..0000000 --- a/public/caffemodel/sr.prototxt +++ /dev/null @@ -1,403 +0,0 @@ -layer { - name: "data" - type: "Input" - top: "data" - input_param { - shape { - dim: 1 - dim: 1 - dim: 224 - dim: 224 - } - } -} -layer { - name: "conv0" - type: "Convolution" - bottom: "data" - top: "conv0" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - convolution_param { - num_output: 32 - bias_term: true - pad: 1 - kernel_size: 3 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - } -} -layer { - name: "conv0/lrelu" - type: "ReLU" - bottom: "conv0" - top: "conv0" - relu_param { - negative_slope: 0.05000000074505806 - } -} -layer { - name: "db1/reduce" - type: "Convolution" - bottom: "conv0" - top: "db1/reduce" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - convolution_param { - num_output: 8 - bias_term: true - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - } -} -layer { - name: "db1/reduce/lrelu" - type: "ReLU" - bottom: "db1/reduce" - top: "db1/reduce" - relu_param { - negative_slope: 0.05000000074505806 - } -} -layer { - name: "db1/3x3" - type: "Convolution" - bottom: "db1/reduce" - top: "db1/3x3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - convolution_param { - num_output: 8 - bias_term: true - pad: 1 - kernel_size: 3 - group: 8 - stride: 1 - weight_filler { - type: "msra" - } - } -} -layer { - name: "db1/3x3/lrelu" - type: "ReLU" - bottom: "db1/3x3" - top: "db1/3x3" - relu_param { - negative_slope: 0.05000000074505806 - } -} -layer { - name: "db1/1x1" - type: "Convolution" - bottom: "db1/3x3" - top: "db1/1x1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - convolution_param { - num_output: 32 - bias_term: true - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - } -} -layer { - name: "db1/1x1/lrelu" - type: "ReLU" - bottom: "db1/1x1" - top: "db1/1x1" - relu_param { - negative_slope: 0.05000000074505806 - } -} -layer { - name: "db1/concat" - type: "Concat" - bottom: "conv0" - bottom: "db1/1x1" - top: "db1/concat" - concat_param { - axis: 1 - } -} -layer { - name: "db2/reduce" - type: "Convolution" - bottom: "db1/concat" - top: "db2/reduce" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - convolution_param { - num_output: 8 - bias_term: true - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - } -} -layer { - name: "db2/reduce/lrelu" - type: "ReLU" - bottom: "db2/reduce" - top: "db2/reduce" - relu_param { - negative_slope: 0.05000000074505806 - } -} -layer { - name: "db2/3x3" - type: "Convolution" - bottom: "db2/reduce" - top: "db2/3x3" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - convolution_param { - num_output: 8 - bias_term: true - pad: 1 - kernel_size: 3 - group: 8 - stride: 1 - weight_filler { - type: "msra" - } - } -} -layer { - name: "db2/3x3/lrelu" - type: "ReLU" - bottom: "db2/3x3" - top: "db2/3x3" - relu_param { - negative_slope: 0.05000000074505806 - } -} -layer { - name: "db2/1x1" - type: "Convolution" - bottom: "db2/3x3" - top: "db2/1x1" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - convolution_param { - num_output: 32 - bias_term: true - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - } -} -layer { - name: "db2/1x1/lrelu" - type: "ReLU" - bottom: "db2/1x1" - top: "db2/1x1" - relu_param { - negative_slope: 0.05000000074505806 - } -} -layer { - name: "db2/concat" - type: "Concat" - bottom: "db1/concat" - bottom: "db2/1x1" - top: "db2/concat" - concat_param { - axis: 1 - } -} -layer { - name: "upsample/reduce" - type: "Convolution" - bottom: "db2/concat" - top: "upsample/reduce" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - convolution_param { - num_output: 32 - bias_term: true - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - } -} -layer { - name: "upsample/reduce/lrelu" - type: "ReLU" - bottom: "upsample/reduce" - top: "upsample/reduce" - relu_param { - negative_slope: 0.05000000074505806 - } -} -layer { - name: "upsample/deconv" - type: "Deconvolution" - bottom: "upsample/reduce" - top: "upsample/deconv" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - convolution_param { - num_output: 32 - bias_term: true - pad: 1 - kernel_size: 3 - group: 32 - stride: 2 - weight_filler { - type: "msra" - } - } -} -layer { - name: "upsample/lrelu" - type: "ReLU" - bottom: "upsample/deconv" - top: "upsample/deconv" - relu_param { - negative_slope: 0.05000000074505806 - } -} -layer { - name: "upsample/rec" - type: "Convolution" - bottom: "upsample/deconv" - top: "upsample/rec" - param { - lr_mult: 1.0 - decay_mult: 1.0 - } - param { - lr_mult: 1.0 - decay_mult: 0.0 - } - convolution_param { - num_output: 1 - bias_term: true - pad: 0 - kernel_size: 1 - group: 1 - stride: 1 - weight_filler { - type: "msra" - } - } -} -layer { - name: "nearest" - type: "Deconvolution" - bottom: "data" - top: "nearest" - param { - lr_mult: 0.0 - decay_mult: 0.0 - } - convolution_param { - num_output: 1 - bias_term: false - pad: 0 - kernel_size: 2 - group: 1 - stride: 2 - weight_filler { - type: "constant" - value: 1.0 - } - } -} -layer { - name: "Crop1" - type: "Crop" - bottom: "nearest" - bottom: "upsample/rec" - top: "Crop1" -} -layer { - name: "fc" - type: "Eltwise" - bottom: "Crop1" - bottom: "upsample/rec" - top: "fc" - eltwise_param { - operation: SUM - } -} diff --git a/src/api/share/index.ts b/src/api/share/index.ts index 888aa2c..4f98093 100644 --- a/src/api/share/index.ts +++ b/src/api/share/index.ts @@ -22,6 +22,10 @@ export const queryShareImageApi = (invite_code: string, access_password: string) invite_code: invite_code, access_password: access_password, }, { + cacheFor: { + expire: 60 * 60 * 24 * 7, + mode: "restore", + }, meta: { ignoreToken: false, signature: false, @@ -35,6 +39,10 @@ export const queryShareRecordListApi = (dataRequest: string[]) => { return service.Post('/api/auth/share/record/list', { date_range: dataRequest, }, { + cacheFor: { + expire: 60 * 60 * 24 * 7, + mode: "restore", + }, meta: { ignoreToken: false, signature: false, @@ -45,12 +53,13 @@ export const queryShareRecordListApi = (dataRequest: string[]) => { * 查询分享信息 * @param invite_code */ -export const queryShareInfoApi = (invite_code: string) => { +export const queryShareInfoApi = (invite_code: string, access_password: string) => { return service.Post('/api/auth/share/info', { invite_code: invite_code, + access_password: access_password, }, { cacheFor: { - expire: 60, //60 * 60 * 24 * 7 + expire: 60 * 60 * 24 * 7, mode: "restore", }, meta: { @@ -65,7 +74,7 @@ export const queryShareInfoApi = (invite_code: string) => { export const queryShareOverviewApi = () => { return service.Post('/api/auth/share/overview', {}, { cacheFor: { - expire: 60, //60 * 60 * 24 * 7 + expire: 60 * 60 * 24 * 7, mode: "restore", }, meta: { diff --git a/src/api/storage/index.ts b/src/api/storage/index.ts index 96f00f0..500696b 100644 --- a/src/api/storage/index.ts +++ b/src/api/storage/index.ts @@ -132,12 +132,12 @@ export const albumListApi = (type: number, sort: boolean) => { * @param provider * @param bucket */ -export const queryAlbumDetailListApi = (id: number, provider: string, bucket: string,type:number) => { +export const queryAlbumDetailListApi = (id: number, provider: string, bucket: string, type: number) => { return service.Post('/api/auth/storage/album/detail/list', { id: id, provider: provider, bucket: bucket, - type:type, + type: type, }, { cacheFor: { expire: 60 * 60 * 24 * 7, @@ -439,3 +439,18 @@ export const albumShareApi = (id: number, expire_date: string, access_limit: num name: "album-share", }); }; +/** + * 搜索照片 + * @param data + */ +export const imageSearchApi = (data: any) => { + return service.Post('/api/auth/storage/image/search', { + ...data, + }, { + meta: { + ignoreToken: false, + signature: false, + }, + name: "image-search", + }); +}; diff --git a/src/assets/svgs/anime.svg b/src/assets/svgs/anime.svg new file mode 100644 index 0000000..2b042cd --- /dev/null +++ b/src/assets/svgs/anime.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svgs/face_detection.svg b/src/assets/svgs/face_detection.svg new file mode 100644 index 0000000..47b0fd0 --- /dev/null +++ b/src/assets/svgs/face_detection.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svgs/gps.svg b/src/assets/svgs/gps.svg new file mode 100644 index 0000000..d1c03a4 --- /dev/null +++ b/src/assets/svgs/gps.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svgs/image.svg b/src/assets/svgs/image.svg new file mode 100644 index 0000000..245d894 --- /dev/null +++ b/src/assets/svgs/image.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svgs/landscape.svg b/src/assets/svgs/landscape.svg new file mode 100644 index 0000000..a4a5ad5 --- /dev/null +++ b/src/assets/svgs/landscape.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svgs/lock-2.svg b/src/assets/svgs/lock-2.svg new file mode 100644 index 0000000..b36e7f3 --- /dev/null +++ b/src/assets/svgs/lock-2.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svgs/lock.svg b/src/assets/svgs/lock.svg new file mode 100644 index 0000000..618db74 --- /dev/null +++ b/src/assets/svgs/lock.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svgs/nsfw.svg b/src/assets/svgs/nsfw.svg new file mode 100644 index 0000000..896f398 --- /dev/null +++ b/src/assets/svgs/nsfw.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svgs/params.svg b/src/assets/svgs/params.svg new file mode 100644 index 0000000..200068e --- /dev/null +++ b/src/assets/svgs/params.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svgs/qr.svg b/src/assets/svgs/qr.svg new file mode 100644 index 0000000..0a8a642 --- /dev/null +++ b/src/assets/svgs/qr.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svgs/screenshot.svg b/src/assets/svgs/screenshot.svg new file mode 100644 index 0000000..8a0d919 --- /dev/null +++ b/src/assets/svgs/screenshot.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svgs/target.svg b/src/assets/svgs/target.svg new file mode 100644 index 0000000..426943f --- /dev/null +++ b/src/assets/svgs/target.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svgs/time.svg b/src/assets/svgs/time.svg new file mode 100644 index 0000000..92af4e1 --- /dev/null +++ b/src/assets/svgs/time.svg @@ -0,0 +1 @@ + diff --git a/src/assets/svgs/unlock.svg b/src/assets/svgs/unlock.svg new file mode 100644 index 0000000..50e33aa --- /dev/null +++ b/src/assets/svgs/unlock.svg @@ -0,0 +1 @@ + diff --git a/src/components/CheckCard/CheckCard.vue b/src/components/CheckCard/CheckCard.vue index 3af9363..f55cb2b 100644 --- a/src/components/CheckCard/CheckCard.vue +++ b/src/components/CheckCard/CheckCard.vue @@ -40,6 +40,7 @@ interface Props { showHoverCircle?: boolean; // 控制是否显示悬停圆环 iconSize?: number; // 控制图标大小 showSelectedEffect?: boolean; // 控制是否显示选中效果 + selectionMode?: 'multiple' | 'single'; } const props = withDefaults(defineProps(), { @@ -51,6 +52,7 @@ const props = withDefaults(defineProps(), { showHoverCircle: true, // 默认显示悬停圆环 iconSize: 24, // 默认图标大小 showSelectedEffect: true, // 默认显示选中效果 + selectionMode: 'multiple' }); const emits = defineEmits(['update:modelValue']); @@ -78,10 +80,20 @@ function handleClick() { } function toggleSelection() { - if (isSelected.value) { - emits('update:modelValue', props.modelValue?.filter((val) => val !== props.value)); + if (props.selectionMode === 'multiple') { + // 多选逻辑 + if (isSelected.value) { + emits('update:modelValue', props.modelValue?.filter((val) => val !== props.value) || []); + } else { + emits('update:modelValue', [...(props.modelValue || []), props.value]); + } } else { - emits('update:modelValue', [...(props.modelValue || []), props.value]); + // 单选逻辑 + if (isSelected.value) { + emits('update:modelValue', []); // 取消选中 + } else { + emits('update:modelValue', [props.value]); // 选中当前项 + } } } @@ -98,8 +110,8 @@ function toggleSelection() { } .check-card.selected { - border: 1px solid rgba(125, 167, 255, 0.68); - box-shadow: 0 0 2px rgba(77, 167, 255, 0.89); + //border: 1px solid rgba(125, 167, 255, 0.68); + box-shadow: 0 0 10px rgba(77, 167, 255, 0.89); background-color: #e5eeff; } diff --git a/src/components/CommentReply/index.scss b/src/components/CommentReply/index.scss index c79f913..cfa9b5b 100644 --- a/src/components/CommentReply/index.scss +++ b/src/components/CommentReply/index.scss @@ -1,10 +1,10 @@ .comment-main { display: flex; flex-direction: column; - border: 1px solid #ccc; - margin-top: 20px; + //border: 1px solid #ccc; + //margin-top: 20px; width: 700px; - padding: 50px; + //padding: 50px; .comment-header-title { font-size: 18px; diff --git a/src/components/CommentReply/index.vue b/src/components/CommentReply/index.vue index 0a101fd..54dafec 100644 --- a/src/components/CommentReply/index.vue +++ b/src/components/CommentReply/index.vue @@ -1,21 +1,28 @@ + diff --git a/src/components/ImageToolbar/ImageToolbar.vue b/src/components/ImageToolbar/ImageToolbar.vue index 8f54622..6567c47 100644 --- a/src/components/ImageToolbar/ImageToolbar.vue +++ b/src/components/ImageToolbar/ImageToolbar.vue @@ -28,6 +28,12 @@ 下载原图 + + + 编辑 + + diff --git a/src/components/ImageWaterfallList/ImageWaterfallList.vue b/src/components/ImageWaterfallList/ImageWaterfallList.vue index 64aa62b..20e4521 100644 --- a/src/components/ImageWaterfallList/ImageWaterfallList.vue +++ b/src/components/ImageWaterfallList/ImageWaterfallList.vue @@ -1,12 +1,11 @@ + + + + + + diff --git a/src/layout/default/Header/Search.vue b/src/layout/default/Header/Search.vue index 1439f6f..a4851a8 100644 --- a/src/layout/default/Header/Search.vue +++ b/src/layout/default/Header/Search.vue @@ -3,42 +3,88 @@ @@ -69,4 +171,56 @@ const handleInputBlur = () => { margin-top: 10px; } } + +.header-search-params-container { + width: 230px; + height: 200px; + display: flex; + flex-direction: row; + align-items: flex-start; + flex-wrap: wrap; + justify-content: flex-start; + gap: 25px; + + .header-search-params-item { + width: 100px; + height: 40px; + display: flex; + align-items: center; + gap: 15px; + + .photo-item-label { + font-size: 14px; + font-weight: bolder; + } + } +} + +.header-search-time { + width: 100%; + display: flex; + align-items: center; + justify-content: center; +} + +.header-search-picture { + display: flex; + flex-direction: row; + align-items: flex-start; + justify-content: flex-start; + gap: 20px; + + .avatar-uploader { + width: 100px; + height: 100px; + } + + .header-search-picture-info { + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: flex-start; + gap: 10px; + } +} diff --git a/src/router/modules/phone_upload.ts b/src/router/modules/phone_upload.ts index eba2d21..e97a6a0 100644 --- a/src/router/modules/phone_upload.ts +++ b/src/router/modules/phone_upload.ts @@ -16,5 +16,15 @@ export default [ requiresAuth: false, title: '手机上传' } + }, + { + path: '/main/image/phone/app', + name: 'imageApp', + component: () => import('@/views/Phone/CommonPhoneUpload/CommonPhoneUpload.vue'), + meta: { + requiresAuth: false, + title: '手机上传' + } } + ]; diff --git a/src/store/index.ts b/src/store/index.ts index 14ac687..478b780 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -8,6 +8,7 @@ import {useMenuStore} from "@/store/modules/menuStore.ts"; import {useUploadStore} from "@/store/modules/uploadStore.ts"; import {useImageStore} from "@/store/modules/imageStore.ts"; import {useShareStore} from "@/store/modules/shareStore.ts"; +import {useSearchStore} from "@/store/modules/searchStore.ts"; export default function useStore() { return { @@ -21,5 +22,6 @@ export default function useStore() { upload: useUploadStore(), image: useImageStore(), share: useShareStore(), + search: useSearchStore(), }; } diff --git a/src/store/modules/imageStore.ts b/src/store/modules/imageStore.ts index ddbeb26..9130f1f 100644 --- a/src/store/modules/imageStore.ts +++ b/src/store/modules/imageStore.ts @@ -37,6 +37,7 @@ export const useImageStore = defineStore( "1": "我的分享", "2": "我的收藏", }); + const albumIdList = ref([]); // 相册分享弹窗相关 const openAlbumShareDialog = ref(false); @@ -49,6 +50,10 @@ export const useImageStore = defineStore( const faceList = ref([]); const faceListLoading = ref(false); + + // 图片编辑 + const imageEditVisible = ref(false); + /** * 获取人脸列表 */ @@ -118,6 +123,8 @@ export const useImageStore = defineStore( faceListLoading, openAlbumShareDialog, JustifiedLayoutOptions, + albumIdList, + imageEditVisible, countTotalImages, openAlbumShareDialogHandler, getAlbumList, @@ -137,7 +144,8 @@ export const useImageStore = defineStore( "homeTabMap", "switchValue", "faceSelectedKey", - "albumList" + "albumList", + "albumIdList" ], } } diff --git a/src/store/modules/searchStore.ts b/src/store/modules/searchStore.ts new file mode 100644 index 0000000..e7f02dd --- /dev/null +++ b/src/store/modules/searchStore.ts @@ -0,0 +1,60 @@ +import {defineStore} from 'pinia'; +import {ref} from "vue"; +import time from "@/assets/svgs/time.svg"; +import location from "@/assets/svgs/location-album.svg"; +import people from "@/assets/svgs/people-album.svg"; +import thing from "@/assets/svgs/thing-album.svg"; +import image from "@/assets/svgs/image.svg"; + + +export const useSearchStore = defineStore( + 'search', + () => { + const options = reactive([ + { + label: '时间', + value: 'time', + icon: time + }, { + label: '地点', + value: 'location', + icon: location + }, { + label: '人物', + value: 'person', + icon: people + }, + { + label: '事物', + value: 'thing', + icon: thing + }, { + label: '图片', + value: 'picture', + icon: image + } + ]); + const searchOption = ref(options[0].value); + const searchValue = ref(''); + + const getIconByValue = (value: string) => { + const option = options.find(option => option.value === value); + return option ? option.icon : undefined; + }; + return { + searchOption, + options, + searchValue, + getIconByValue + }; + }, + { + // 开启数据持久化 + persistedState: { + persist: true, + storage: localStorage, + key: 'search', + includePaths: ['searchOption', 'options'] + } + } +); diff --git a/src/store/modules/shareStore.ts b/src/store/modules/shareStore.ts index 126f069..7d7ce62 100644 --- a/src/store/modules/shareStore.ts +++ b/src/store/modules/shareStore.ts @@ -3,6 +3,8 @@ export const useShareStore = defineStore( () => { const sharePassword = reactive>({}); + const openCommentDrawer = ref(false); + // 获取密码(保持相同API) const getPassword = (key: string): string | undefined => { return sharePassword[key]; @@ -12,17 +14,23 @@ export const useShareStore = defineStore( const addPassword = (key: string, password: string) => { sharePassword[key] = password; }; + + function setOpenCommentDrawer(value: boolean): void { + openCommentDrawer.value = value; + }; return { sharePassword, getPassword, - addPassword + addPassword, + openCommentDrawer, + setOpenCommentDrawer }; }, { // 开启数据持久化 persistedState: { persist: true, - storage: localStorage, + storage: sessionStorage, key: 'share', includePaths: ['sharePassword'] } diff --git a/src/store/modules/uploadStore.ts b/src/store/modules/uploadStore.ts index 09483ff..e201a9a 100644 --- a/src/store/modules/uploadStore.ts +++ b/src/store/modules/uploadStore.ts @@ -1,5 +1,19 @@ // import localforage from 'localforage'; +import imageCompression from "browser-image-compression"; +import {message, type UploadProps} from "ant-design-vue"; +import {initNSFWJs, predictNSFW} from "@/utils/tfjs/nsfw.ts"; +import i18n from "@/locales"; + +import {NSFWJS} from "nsfwjs"; +import {animePredictImagePro} from "@/utils/tfjs/anime_classifier_pro.ts"; +import {cocoSsdPredict} from "@/utils/tfjs/mobilenet.ts"; +import {predictLandscape} from "@/utils/tfjs/landscape_recognition.ts"; +import {getCategoryByLabel} from "@/constant/coco_ssd_label_category.ts"; +import exifr from "exifr"; +import isScreenshot from "@/utils/imageUtils/isScreenshot.ts"; +import {ready, scan} from 'qr-scanner-wechat'; + interface UploadPredictResult { isAnime: boolean; tagName: string | null; @@ -13,6 +27,7 @@ interface UploadPredictResult { thumb_w: number | null; thumb_h: number | null; thumb_size: number | null; + hasQrcode: boolean; } export const useUploadStore = defineStore( @@ -33,11 +48,45 @@ export const useUploadStore = defineStore( thumb_w: null, thumb_h: null, thumb_size: null, + hasQrcode: false, + }); + + const uploadSetting = reactive({ + nsfw_detection: true, + anime_detection: true, + landscape_detection: true, + screenshot_detection: true, + gps_detection: true, + target_detection: false, + qrcode_detection: true, + face_detection: true, }); const storageSelected = ref([]); - const albumSelected = ref(0); + const albumSelected = ref(); + + const predicting = ref(false); + const progressPercent = ref(0); + const progressStatus = ref('active'); + const image = new Image(); + // 压缩图片配置 + const options = reactive({ + maxSizeMB: 0.2, + maxWidthOrHeight: 750, + maxIteration: 2, + useWebWorker: true, + }); + const progress: UploadProps['progress'] = { + strokeColor: { + '0%': '#108ee9', + '100%': '#87d068', + }, + strokeWidth: 3, + format: (percent: any) => `${parseFloat(percent.toFixed(2))}%`, + class: 'progress-bar', + }; + const fileList = ref([]); /** * 打开上传抽屉 @@ -62,8 +111,208 @@ export const useUploadStore = defineStore( predictResult.thumb_w = null; predictResult.thumb_h = null; predictResult.thumb_size = null; + predictResult.hasQrcode = false; } + /** + * 图片上传前的校验 + * @param file + * @param fileList + */ + async function beforeUpload(file: File, fileList: File[]) { + predicting.value = true; + clearPredictResult(); + progressPercent.value = 0; // 初始化进度条 + progressStatus.value = 'active'; // 开始状态 + // 压缩图片 + const compressedFile = await imageCompression(file, options); + // 创建图片对象 + image.src = URL.createObjectURL(compressedFile); + // 获取图片宽高 + image.onload = async () => { + const {width, height} = image; + predictResult.width = width; + predictResult.height = height; + // 二维码检测 + if (uploadSetting.qrcode_detection) { + await ready(); + const result = await scan(image); + if (result.text) { + predictResult.hasQrcode = true; + } + } + }; + + // 更新进度条函数,逐步增加 + const smoothUpdateProgress = async (targetPercent, duration) => { + const increment = (targetPercent - progressPercent.value) / (duration / 50); + return new Promise((resolve) => { + const interval = setInterval(() => { + if (progressPercent.value >= targetPercent) { + clearInterval(interval); + resolve(false); + } else { + progressPercent.value = Math.min(progressPercent.value + increment, targetPercent); + } + }, 50); + }); + }; + + try { + // 动态计算启用的检测步骤及进度分配 + const enabledSteps = [ + uploadSetting.nsfw_detection, + uploadSetting.gps_detection, + uploadSetting.screenshot_detection, + uploadSetting.anime_detection, + uploadSetting.target_detection || uploadSetting.landscape_detection + ].filter(Boolean).length; + + const stepIncrement = enabledSteps > 0 ? Math.floor(100 / enabledSteps) : 100; + let currentProgress = 0; + + // NSFW 检测 + if (uploadSetting.nsfw_detection) { + const nsfw: NSFWJS = await initNSFWJs(); + await smoothUpdateProgress(currentProgress + stepIncrement, 500); + currentProgress += stepIncrement; + + const isNSFW: boolean = await predictNSFW(nsfw, image); + if (isNSFW) { + message.error(i18n.global.t('comment.illegalImage')); + progressStatus.value = 'exception'; + fileList.pop(); + predicting.value = false; + return false; + } + } + + // GPS 数据提取 + if (uploadSetting.gps_detection) { + const gpsData = await extractGPSExifData(file); + if (gpsData) { + predictResult.longitude = gpsData.longitude; + predictResult.latitude = gpsData.latitude; + } + await smoothUpdateProgress(currentProgress + stepIncrement, 500); + currentProgress += stepIncrement; + } + + // 截图检测 + if (uploadSetting.screenshot_detection) { + predictResult.isScreenshot = await isScreenshot(file); + await smoothUpdateProgress(currentProgress + stepIncrement, 500); + currentProgress += stepIncrement; + } + + // 动漫检测 + if (uploadSetting.anime_detection) { + const prediction = await animePredictImagePro(image); + if (prediction === 'Furry' || prediction === 'Anime') { + predictResult.isAnime = true; + predicting.value = false; + progressPercent.value = 100; + return true; + } + await smoothUpdateProgress(currentProgress + stepIncrement, 500); + currentProgress += stepIncrement; + } + + // 目标检测 + if (uploadSetting.target_detection) { + const cocoResults: any = await cocoSsdPredict(image); + if (cocoResults.length > 0) { + // 取置信度最高的结果 + // 如果只有一个结果,直接取第一个 + if (cocoResults.length === 1) { + predictResult.topCategory = getCategoryByLabel(cocoResults[0].class); + predictResult.tagName = cocoResults[0].class; + } else { + // 多个结果时,按 score 排序,取置信度最高的结果 + const sortedResults = cocoResults.sort((a, b) => b.score - a.score); + predictResult.topCategory = getCategoryByLabel(sortedResults[0].class); + predictResult.tagName = sortedResults[0].class; + } + } + await smoothUpdateProgress(currentProgress + stepIncrement, 500); + currentProgress += stepIncrement; + } + if (uploadSetting.landscape_detection) { + const landscape = await predictLandscape(image); + predictResult.landscape = landscape as 'building' | 'forest' | 'glacier' | 'mountain' | 'sea' | 'street' | null; + await smoothUpdateProgress(currentProgress + stepIncrement, 500); + } + + // 确保进度条到100% + if (currentProgress < 100) { + await smoothUpdateProgress(100, 500); + } + + + predicting.value = false; + return true; + + } catch (error) { + console.error('识别过程中发生错误:', error); + predicting.value = false; + progressPercent.value = 0; // 重置进度条 + return false; + } + } + + + /** + * 提取 EXIF 数据 + * @param {File} file - 图片文件 + * @returns {Promise} - 返回所有 EXIF 数据或 null(如果格式不支持或提取失败) + */ + async function extractGPSExifData(file): Promise<{ latitude: any; longitude: any; } | null> { + const supportedFormats = ['image/jpeg', 'image/tiff', 'image/iiq', 'image/heif', 'image/heic', 'image/avif', 'image/png']; + + // 判断文件格式是否支持 + if (!supportedFormats.includes(file.type)) { + return null; + } + const options: any = { + ifd0: false, + exif: false, + gps: ['GPSLatitudeRef', 'GPSLatitude', 0x0003, 0x0004], + interop: false, + ifd1: false // thumbnail + }; + + // 提取GPS EXIF 数据 + const gpsData = await exifr.parse(file, options); + if (!gpsData) { + return null; + } + const {latitude, longitude} = gpsData; + if (latitude && longitude) { + return {latitude, longitude}; + } + return null; + } + + /** + * 拒绝文件回调 + * @param fileList + */ + function rejectFile(fileList: any) { + fileList.value.pop(); + } + + /** + * 删除文件 + * @param file + */ + function removeFile(file: any) { + fileList.value = fileList.value.filter((item: any) => item.uid !== file.uid); + } + + onMounted(async () => { + await ready(); + }); + return { openUploadDrawer, @@ -71,7 +320,17 @@ export const useUploadStore = defineStore( storageSelected, openUploadDrawerFn, clearPredictResult, + beforeUpload, albumSelected, + options, + predicting, + progressPercent, + progressStatus, + uploadSetting, + progress, + fileList, + rejectFile, + removeFile, }; }, { @@ -80,7 +339,7 @@ export const useUploadStore = defineStore( persist: true, storage: localStorage, key: 'upload', - includePaths: ["storageSelected", "albumSelected"] + includePaths: ["storageSelected", "albumSelected", "uploadSetting"] } } ); diff --git a/src/utils/QRDetection/qr_detection.ts b/src/utils/QRDetection/qr_detection.ts deleted file mode 100644 index 3207b64..0000000 --- a/src/utils/QRDetection/qr_detection.ts +++ /dev/null @@ -1,10 +0,0 @@ -import OpencvQr from "opencv-qr"; - -/** - * OpenCV QR detection class - */ -const opencvQr = new OpencvQr({ - dw: "/caffemodel/detect.caffemodel", - sw: "/caffemodel/sr.caffemodel", -}); -export default opencvQr; diff --git a/src/utils/alova/service.ts b/src/utils/alova/service.ts index 93b8eb3..e52d40b 100644 --- a/src/utils/alova/service.ts +++ b/src/utils/alova/service.ts @@ -50,7 +50,7 @@ export const service = createAlova({ const user = useStore().user; method.config.headers.Authorization = `${import.meta.env.VITE_APP_TOKEN_KEY} ${user.token.accessToken}`; method.config.headers['X-UID'] = user.user.uid; - method.config.headers['X-Expire-At'] = user.token.expireAt; + // method.config.headers['X-Expire-At'] = user.token.expireAt; } const lang = useStore().lang; method.config.headers['Accept-Language'] = lang.lang || 'zh'; diff --git a/src/utils/imageUtils/bytesToSize.ts b/src/utils/imageUtils/bytesToSize.ts new file mode 100644 index 0000000..2bace09 --- /dev/null +++ b/src/utils/imageUtils/bytesToSize.ts @@ -0,0 +1,15 @@ +export function bytesToSize(bytes: number, decimals = 2): string { + if (bytes === 0) return '0 Bytes'; + + const k = 1024; + const dm = decimals < 0 ? 0 : decimals; + const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; + + const i = Math.floor(Math.log(bytes) / Math.log(k)); + + return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]; +} + +// 使用示例 +// console.log(bytesToSize(1024)); // 输出: 1 KB +// console.log(bytesToSize(123456789)); // 输出: 117.74 MB diff --git a/src/views/Phone/CommonPhoneUpload/CommonPhoneUpload.vue b/src/views/Phone/CommonPhoneUpload/CommonPhoneUpload.vue new file mode 100644 index 0000000..487ae0c --- /dev/null +++ b/src/views/Phone/CommonPhoneUpload/CommonPhoneUpload.vue @@ -0,0 +1,193 @@ + + + diff --git a/src/views/Share/ImageShare/ShareUpload.vue b/src/views/Share/ImageShare/ShareUpload.vue index 48df523..05842a2 100644 --- a/src/views/Share/ImageShare/ShareUpload.vue +++ b/src/views/Share/ImageShare/ShareUpload.vue @@ -37,6 +37,7 @@ :icon="phone" :iconSize="iconSize" :status="qrStatus" + @refresh="initWebSocket" /> - - + + 手机上传 @@ -208,7 +210,6 @@ import {generateThumbnail} from "@/utils/imageUtils/generateThumb.ts"; const titleName = ref(""); -const upload = useStore().upload; const percent = ref(0); const uploadSuccess = ref(false); const qrContainer = ref(null); @@ -429,7 +430,6 @@ const wsOptions = { }; function generateQrCodeUrl(): string { - console.log(import.meta.env.VITE_APP_WEB_URL + "/main/share/phone/app?user_id=" + user.user.uid + "&token=" + user.token.accessToken); return import.meta.env.VITE_APP_WEB_URL + "/main/share/phone/app?user_id=" + user.user.uid + "&token=" + user.token.accessToken; } diff --git a/src/views/Share/ShareViewList/CommentModal.vue b/src/views/Share/ShareViewList/CommentModal.vue new file mode 100644 index 0000000..a65c372 --- /dev/null +++ b/src/views/Share/ShareViewList/CommentModal.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/views/Share/ShareViewList/ShareSidebar.vue b/src/views/Share/ShareViewList/ShareSidebar.vue index 3df2c94..a933b68 100644 --- a/src/views/Share/ShareViewList/ShareSidebar.vue +++ b/src/views/Share/ShareViewList/ShareSidebar.vue @@ -19,7 +19,10 @@

{{ shareInfo.album_name }}

{{ formatTimeWithChinese(shareInfo.expire_time) }} 失效

已加入,去查看 - 复制链接 + + 复制链接 + @@ -25,10 +36,12 @@ import Header from "@/layout/default/Header/Header.vue"; import ShareSidebar from "@/views/Share/ShareViewList/ShareSidebar.vue"; - -import {queryShareImageApi} from "@/api/share"; +import lock2 from "@/assets/svgs/lock-2.svg"; +import unlock from "@/assets/svgs/unlock.svg"; +import {queryShareImageApi, queryShareInfoApi} from "@/api/share"; import ImageWaterfallList from "@/components/ImageWaterfallList/ImageWaterfallList.vue"; import useStore from "@/store"; +import CommentModal from "@/views/Share/ShareViewList/CommentModal.vue"; const imageList = ref([]); @@ -36,6 +49,8 @@ const route = useRoute(); const imageStore = useStore().image; const shareStore = useStore().share; +const shareInfo = ref(); + /** * 获取分享图片列表 @@ -49,16 +64,32 @@ async function getShareImages(password: string) { if (res && res.code === 200) { imageList.value = res.data.records; shareStore.addPassword(code, password); + await getShareInfo(code, password); } imageStore.imageListLoading = false; } -onMounted(() => { +async function getShareInfo(invite_code: string, password: string) { + const res: any = await queryShareInfoApi(invite_code, password); + if (res && res.code === 200) { + shareInfo.value = res.data; + } +} + +const getPassword = computed(() => { const invite_code = route.params.id; const code = Array.isArray(invite_code) ? invite_code[0] : invite_code; - const password = shareStore.getPassword(code); - if (password) { - getShareImages(password); + return shareStore.getPassword(code); +}); + +const getInviteCode = computed(() => { + const invite_code = route.params.id; + return Array.isArray(invite_code) ? invite_code[0] : invite_code; +}); + +onMounted(() => { + if (getPassword.value) { + getShareImages(getPassword.value); } }); @@ -83,7 +114,6 @@ onMounted(() => { .share-view-content-container { width: calc(100vw - 230px); height: calc(100vh - 100px); - max-height: calc(100vh - 100px); padding: 15px; overflow: auto; @@ -94,7 +124,7 @@ onMounted(() => { flex-direction: row; align-items: center; justify-content: flex-start; - gap: 10px; + //gap: 10px; border-bottom: 1px solid #e2e2e2; .share-content-header-button { @@ -108,7 +138,7 @@ onMounted(() => { } .share-content-verify { - width: 100%; + width: calc(100vw - 230px); height: calc(100vh - 155px); display: flex; flex-direction: column; @@ -116,6 +146,11 @@ onMounted(() => { justify-content: center; gap: 10px; } + + .share-content-list { + width: calc(100vw - 230px); + height: calc(100vh - 155px); + } } }