|
@@ -137,7 +137,7 @@ import UiInput from "@/components/base/components/input/index.vue";
|
|
|
import {HandMode, useHand} from '@/hook/useHand'
|
|
|
import Header from "@/components/photos/header.vue";
|
|
|
import MainPanel from "@/components/main-panel/index.vue";
|
|
|
-import {uploadImage} from "@/store/sync";
|
|
|
+import {downloadImage, uploadImage} from "@/store/sync";
|
|
|
import {Mode} from "@/views/graphic/menus";
|
|
|
|
|
|
const roadPhoto = computed<RoadPhoto>(() => {
|
|
@@ -177,21 +177,18 @@ const { cssMatrix: photoCSSMatrix, matrix: photoMatrix } = useHand(
|
|
|
history.value.value.imageTransform
|
|
|
)
|
|
|
|
|
|
-const photoWidth = ref(0)
|
|
|
-watchEffect(() => {
|
|
|
- if (photoRef.value) {
|
|
|
- photoRef.value.onload = () => {
|
|
|
- photoWidth.value = photoRef.value.naturalWidth
|
|
|
- }
|
|
|
- }
|
|
|
-})
|
|
|
const proportion = ref(1)
|
|
|
watchEffect(() => {
|
|
|
if (!roadPhoto.value || !photoRef.value) {
|
|
|
return;
|
|
|
}
|
|
|
- const prop = ((photoWidth.value / photoRef.value.width) * (roadPhoto.value.data.scale || 1)) / photoMatrix.value[0]
|
|
|
- proportion.value = Math.ceil(prop * 100) / 100
|
|
|
+ const scale = roadPhoto.value.data.scale || 1
|
|
|
+ const martrixScale = photoMatrix.value[0]
|
|
|
+ photoRef.value.onload = () => {
|
|
|
+ const photoWidth = photoRef.value.naturalWidth
|
|
|
+ const prop = ((photoWidth / photoRef.value.offsetWidth) * scale) / martrixScale
|
|
|
+ proportion.value = Math.ceil(prop * 100) / 100
|
|
|
+ }
|
|
|
})
|
|
|
|
|
|
|
|
@@ -210,6 +207,7 @@ const getLayoutImage = async () => {
|
|
|
const canvas = await html2canvas(layoutRef.value)
|
|
|
downMode.value = false
|
|
|
const blob = await new Promise<Blob>(resolve => canvas.toBlob(resolve, "image/jpeg", 0.95))
|
|
|
+ await downloadImage(blob)
|
|
|
return await uploadImage(blob)
|
|
|
}
|
|
|
const saveHandler = async () => {
|
|
@@ -236,7 +234,7 @@ const saveHandler = async () => {
|
|
|
|
|
|
.content {
|
|
|
box-sizing: content-box;
|
|
|
- width: 980px;
|
|
|
+ width: 1066px;
|
|
|
padding: 20px 20px 60px;
|
|
|
margin: 0 auto;
|
|
|
}
|