|
@@ -12,6 +12,7 @@ import {
|
|
|
import { noValidPoint } from "./install";
|
|
|
import { PointTypeEnum } from "@/lib/board/4dmap";
|
|
|
import { addWatermark } from "@/util/image";
|
|
|
+import { Message, MessageBox } from "@element-plus/icons-vue";
|
|
|
|
|
|
export const exportFile = async (
|
|
|
points: ScenePoint[],
|
|
@@ -73,32 +74,39 @@ export const exportImage = async (points: ScenePoint[], name?: string) => {
|
|
|
const imgFolder = zip.folder(name || "images")!;
|
|
|
|
|
|
const downloadImages = Promise.all(
|
|
|
- points.map((point) => {
|
|
|
- const url = getPointPano(point) as string;
|
|
|
- console.log(url, point)
|
|
|
-
|
|
|
- let loadBlob: Promise<Blob>
|
|
|
- if (!noValidPoint(point)) {
|
|
|
- let ration = 6;
|
|
|
- loadBlob = new Promise<void>(resolve => {
|
|
|
- const img = new Image()
|
|
|
- img.src = url
|
|
|
- img.onload = () => {
|
|
|
- ration = img.width / 2730
|
|
|
- resolve()
|
|
|
- }
|
|
|
- }).then(() => addWatermark(url, point!.pos, ration))
|
|
|
- } else {
|
|
|
- loadBlob = fetch(url).then(res => res.blob())
|
|
|
+ points.map(async (point) => {
|
|
|
+ const getBlob = (isThumbnail: boolean) => {
|
|
|
+ const url = getPointPano(point, false, isThumbnail) as string;
|
|
|
+ console.log(url, point);
|
|
|
+ let loadBlob: Promise<Blob>;
|
|
|
+ if (!noValidPoint(point)) {
|
|
|
+ let ration = 6;
|
|
|
+ loadBlob = new Promise<void>((resolve, reject) => {
|
|
|
+ const img = new Image();
|
|
|
+ img.src = url;
|
|
|
+ img.onload = () => {
|
|
|
+ ration = img.width / 2730;
|
|
|
+ resolve();
|
|
|
+ };
|
|
|
+ img.onerror =reject
|
|
|
+ }).then(() => addWatermark(url, point!.pos, ration));
|
|
|
+ } else {
|
|
|
+ loadBlob = fetch(url).then((res) => res.blob());
|
|
|
+ }
|
|
|
+ return loadBlob;
|
|
|
+ };
|
|
|
+ let loadBlob: Blob;
|
|
|
+ try {
|
|
|
+ loadBlob = await getBlob(false)
|
|
|
+ } catch {
|
|
|
+ try {
|
|
|
+ loadBlob = await getBlob(true)
|
|
|
+ } catch {
|
|
|
+ ElMessage.error("图片下载失败!");
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
- return loadBlob
|
|
|
- .then((blob) => {
|
|
|
- imgFolder.file(`${point.sceneCode}-${point.uuid}.jpg`, blob);
|
|
|
- })
|
|
|
- .catch((e) => {
|
|
|
- ElMessage.error(url + "图片下载失败!");
|
|
|
- throw e;
|
|
|
- });
|
|
|
+ return imgFolder.file(`${point.sceneCode}-${point.uuid}.jpg`, loadBlob);
|
|
|
})
|
|
|
);
|
|
|
await downloadImages;
|