Skip to content

Commit e6a26b9

Browse files
committed
fix: 修复保存滚动截图的完整图像数据至历史记录
1 parent cc61c24 commit e6a26b9

File tree

1 file changed

+60
-3
lines changed

1 file changed

+60
-3
lines changed

src/pages/draw/page.tsx

Lines changed: 60 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -831,10 +831,38 @@ const DrawPageCore: React.FC<{
831831
return;
832832
}
833833

834+
// 获取滚动截图的实际图像数据
835+
const imageData = await scrollScreenshotGetImageData(true);
836+
if (!imageData) {
837+
message.error(
838+
<FormattedMessage id="draw.scrollScreenshotSizeError" />,
839+
);
840+
return;
841+
}
842+
843+
// 将图像数据转换为 ArrayBuffer
844+
const captureResult = await new Promise<ArrayBuffer | undefined>(
845+
(resolve) => {
846+
if (imageData instanceof HTMLCanvasElement) {
847+
imageData.toBlob(
848+
async (blob) => {
849+
resolve(await blob?.arrayBuffer());
850+
},
851+
"image/png",
852+
1,
853+
);
854+
} else if (imageData instanceof ArrayBuffer) {
855+
resolve(imageData);
856+
} else {
857+
resolve(undefined);
858+
}
859+
},
860+
);
861+
834862
saveCaptureHistory(
835-
undefined,
863+
captureResult,
836864
CaptureHistorySource.ScrollScreenshotSave,
837-
); // 滚动截图不保存编辑结果
865+
); // 保存滚动截图的完整图像数据
838866

839867
const imagePath =
840868
(await getImagePathFromSettings(
@@ -1109,7 +1137,36 @@ const DrawPageCore: React.FC<{
11091137
return;
11101138
}
11111139

1112-
saveCaptureHistory(undefined, CaptureHistorySource.ScrollScreenshotCopy);
1140+
// 获取滚动截图的实际图像数据
1141+
const imageData = await scrollScreenshotGetImageData(true);
1142+
if (!imageData) {
1143+
message.error(<FormattedMessage id="draw.scrollScreenshotSizeError" />);
1144+
return;
1145+
}
1146+
1147+
// 将图像数据转换为 ArrayBuffer
1148+
const captureResult = await new Promise<ArrayBuffer | undefined>(
1149+
(resolve) => {
1150+
if (imageData instanceof HTMLCanvasElement) {
1151+
imageData.toBlob(
1152+
async (blob) => {
1153+
resolve(await blob?.arrayBuffer());
1154+
},
1155+
"image/png",
1156+
1,
1157+
);
1158+
} else if (imageData instanceof ArrayBuffer) {
1159+
resolve(imageData);
1160+
} else {
1161+
resolve(undefined);
1162+
}
1163+
},
1164+
);
1165+
1166+
saveCaptureHistory(
1167+
captureResult,
1168+
CaptureHistorySource.ScrollScreenshotCopy,
1169+
);
11131170

11141171
const filePath = (
11151172
await getImagePathFromSettings(getAppSettings(), "auto")

0 commit comments

Comments
 (0)