fix: protect scale adjust output regions
This commit is contained in:
parent
e6d3b20308
commit
317593a72d
@ -323,6 +323,16 @@ function scaleRectAroundCenter(
|
||||
};
|
||||
}
|
||||
|
||||
function buildScaleAdjustCompositeRegions(
|
||||
regions: NormalizedLocalEditRegion[],
|
||||
scalePercent: ScaleAdjustPercent
|
||||
) {
|
||||
return regions.flatMap((region) => [
|
||||
region.rect,
|
||||
scaleRectAroundCenter(region.rect, scalePercent),
|
||||
]);
|
||||
}
|
||||
|
||||
function expandPixelRectForCrop(params: {
|
||||
height: number;
|
||||
pixelRect: NormalizedLocalEditRegion["pixelRect"];
|
||||
@ -930,7 +940,13 @@ export async function POST(request: NextRequest) {
|
||||
}
|
||||
: undefined,
|
||||
localEditComposite: isScaleAdjustOperation
|
||||
? undefined
|
||||
? {
|
||||
sourceImageUrl,
|
||||
regions: buildScaleAdjustCompositeRegions(
|
||||
regions,
|
||||
scalePercent as ScaleAdjustPercent
|
||||
),
|
||||
}
|
||||
: {
|
||||
sourceImageUrl,
|
||||
regions: regions.map((region) => region.rect),
|
||||
|
||||
@ -1478,17 +1478,31 @@ export async function generateCanvasImage(
|
||||
throw new Error("图片生成失败");
|
||||
}
|
||||
|
||||
const baseImages = collectedImages.slice(0, targetImageCount);
|
||||
const shouldCompositeBeforeScaleAdjustVerification = Boolean(
|
||||
scaleAdjustVerification && localEditComposite
|
||||
);
|
||||
const protectedImages = shouldCompositeBeforeScaleAdjustVerification
|
||||
? await applyLocalEditCompositeToImages({
|
||||
composite: localEditComposite,
|
||||
debugLabel,
|
||||
images: baseImages,
|
||||
})
|
||||
: baseImages;
|
||||
|
||||
const scaleCheckedImages = await applyScaleAdjustVerificationToImages({
|
||||
debugLabel,
|
||||
images: collectedImages.slice(0, targetImageCount),
|
||||
images: protectedImages,
|
||||
verification: scaleAdjustVerification,
|
||||
});
|
||||
|
||||
const finalImages = await applyLocalEditCompositeToImages({
|
||||
composite: localEditComposite,
|
||||
debugLabel,
|
||||
images: scaleCheckedImages,
|
||||
});
|
||||
const finalImages = shouldCompositeBeforeScaleAdjustVerification
|
||||
? scaleCheckedImages
|
||||
: await applyLocalEditCompositeToImages({
|
||||
composite: localEditComposite,
|
||||
debugLabel,
|
||||
images: scaleCheckedImages,
|
||||
});
|
||||
console.info("[Canvas Generate Image] Completed:", {
|
||||
debugLabel,
|
||||
elapsedMs: Date.now() - startedAt,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user