Recalculate blur data when aspect ratio changes
This commit is contained in:
parent
7cb21a3816
commit
d3ce8f2e91
@ -24,12 +24,10 @@ export default function CanvasBlurCapture({
|
|||||||
quality?: number
|
quality?: number
|
||||||
}) {
|
}) {
|
||||||
const refCanvas = useRef<HTMLCanvasElement>(null);
|
const refCanvas = useRef<HTMLCanvasElement>(null);
|
||||||
const refHasCompleted = useRef(false);
|
|
||||||
const refTimeouts = useRef<NodeJS.Timeout[]>([]);
|
const refTimeouts = useRef<NodeJS.Timeout[]>([]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const capture = () => {
|
const capture = () => {
|
||||||
if (!refHasCompleted.current) {
|
|
||||||
const canvas = refCanvas.current;
|
const canvas = refCanvas.current;
|
||||||
if (canvas) {
|
if (canvas) {
|
||||||
canvas.width = width * scale;
|
canvas.width = width * scale;
|
||||||
@ -49,7 +47,7 @@ export default function CanvasBlurCapture({
|
|||||||
width + edgeCompensation * 2,
|
width + edgeCompensation * 2,
|
||||||
width * image.height / image.width + edgeCompensation * 2,
|
width * image.height / image.width + edgeCompensation * 2,
|
||||||
);
|
);
|
||||||
refHasCompleted.current = true;
|
refTimeouts.current.forEach(clearTimeout);
|
||||||
onCapture(canvas.toDataURL('image/jpeg', quality));
|
onCapture(canvas.toDataURL('image/jpeg', quality));
|
||||||
} else {
|
} else {
|
||||||
console.error('Cannot get 2d context');
|
console.error('Cannot get 2d context');
|
||||||
@ -61,7 +59,6 @@ export default function CanvasBlurCapture({
|
|||||||
// Retry capture in case canvas is not available
|
// Retry capture in case canvas is not available
|
||||||
refTimeouts.current.push(setTimeout(capture, RETRY_DELAY));
|
refTimeouts.current.push(setTimeout(capture, RETRY_DELAY));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const image = new Image();
|
const image = new Image();
|
||||||
|
|||||||
@ -91,13 +91,11 @@ export default function PhotoForm({
|
|||||||
const url = formData.url ?? '';
|
const url = formData.url ?? '';
|
||||||
|
|
||||||
const updateBlurData = useCallback((blurData: string) => {
|
const updateBlurData = useCallback((blurData: string) => {
|
||||||
if (type === 'create') {
|
|
||||||
setFormData(data => ({
|
setFormData(data => ({
|
||||||
...data,
|
...data,
|
||||||
blurData,
|
blurData,
|
||||||
}));
|
}));
|
||||||
}
|
}, []);
|
||||||
}, [type]);
|
|
||||||
|
|
||||||
const isFormValid = FORM_METADATA_ENTRIES.every(([key, { required }]) =>
|
const isFormValid = FORM_METADATA_ENTRIES.every(([key, { required }]) =>
|
||||||
!required || Boolean(formData[key]));
|
!required || Boolean(formData[key]));
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user