fix: failed to load image when pass empty mask

This commit is contained in:
jialin
2025-01-16 22:20:32 +08:00
parent 214c5998c6
commit c0344b385a
2 changed files with 18 additions and 11 deletions
+6 -2
View File
@@ -19,7 +19,7 @@ type CanvasImageEditorProps = {
imageSrc: string; imageSrc: string;
disabled?: boolean; disabled?: boolean;
imguid: string | number; imguid: string | number;
onSave: (imageData: { mask: string; img: string }) => void; onSave: (imageData: { mask: string | null; img: string }) => void;
uploadButton: React.ReactNode; uploadButton: React.ReactNode;
imageStatus: { imageStatus: {
isOriginal: boolean; isOriginal: boolean;
@@ -148,6 +148,9 @@ const CanvasImageEditor: React.FC<CanvasImageEditorProps> = ({
}; };
const generateMask = useCallback(() => { const generateMask = useCallback(() => {
if (strokesRef.current.length === 0) {
return null;
}
const overlayCanvas = overlayCanvasRef.current!; const overlayCanvas = overlayCanvasRef.current!;
const maskCanvas = document.createElement('canvas'); const maskCanvas = document.createElement('canvas');
maskCanvas.width = overlayCanvas.width; maskCanvas.width = overlayCanvas.width;
@@ -197,7 +200,7 @@ const CanvasImageEditor: React.FC<CanvasImageEditorProps> = ({
const link = document.createElement('a'); const link = document.createElement('a');
link.download = 'mask.png'; link.download = 'mask.png';
link.href = mask; link.href = mask || '';
link.click(); link.click();
}, [generateMask]); }, [generateMask]);
@@ -524,6 +527,7 @@ const CanvasImageEditor: React.FC<CanvasImageEditorProps> = ({
redrawStrokes(strokesRef.current); redrawStrokes(strokesRef.current);
} }
updateCursorSize(); updateCursorSize();
saveImage();
}, [drawImage, onReset, redrawStrokes, imguid]); }, [drawImage, onReset, redrawStrokes, imguid]);
const updateZoom = (scaleChange: number, mouseX: number, mouseY: number) => { const updateZoom = (scaleChange: number, mouseX: number, mouseY: number) => {
+12 -9
View File
@@ -122,7 +122,7 @@ const GroundImages: React.FC<MessageProps> = forwardRef((props, ref) => {
const form = useRef<any>(null); const form = useRef<any>(null);
const inputRef = useRef<any>(null); const inputRef = useRef<any>(null);
const [image, setImage] = useState<string>(''); const [image, setImage] = useState<string>('');
const [mask, setMask] = useState<string>(''); const [mask, setMask] = useState<string | null>(null);
const [uploadList, setUploadList] = useState<any[]>([]); const [uploadList, setUploadList] = useState<any[]>([]);
const [modelMeta, setModelMeta] = useState<any>({}); const [modelMeta, setModelMeta] = useState<any>({});
const [imageStatus, setImageStatus] = useState<{ const [imageStatus, setImageStatus] = useState<{
@@ -640,14 +640,17 @@ const GroundImages: React.FC<MessageProps> = forwardRef((props, ref) => {
setImageList([]); setImageList([]);
}, []); }, []);
const handleOnSave = useCallback((data: { img: string; mask: string }) => { const handleOnSave = useCallback(
setImageStatus({ (data: { img: string; mask: string | null }) => {
isOriginal: true, setImageStatus({
isResetNeeded: false isOriginal: true,
}); isResetNeeded: false
setMask(data.mask); });
setImage(data.img); setMask(data.mask || null);
}, []); setImage(data.img);
},
[]
);
const renderImageEditor = useMemo(() => { const renderImageEditor = useMemo(() => {
if (image) { if (image) {