import React, { useRef } from "react"; import Cropper, { ReactCropperElement } from "react-cropper"; import "cropperjs/dist/cropper.css"; import { Button, Modal, ModalBody, ModalFooter, ModalHeader } from "flowbite-react"; type CropModalProps = { isOpen: boolean; isActionsDisabled: boolean; selectedImage: any | null; croppedImage: any | null; setCropModalProps: (props: { isOpen: boolean; isActionsDisabled: boolean; selectedImage: any | null; croppedImage: any | null; }) => void; cropParams: { guides?: boolean; width?: number; height?: number; quality?: number; aspectRatio?: number; forceAspect?: boolean; }; }; export const CropModal: React.FC = ({ isOpen, setCropModalProps, cropParams, selectedImage, croppedImage, isActionsDisabled, }) => { const cropperRef = useRef(null); const getCropData = () => { if (typeof cropperRef.current?.cropper !== "undefined") { const croppedImage = cropperRef.current?.cropper .getCroppedCanvas({ width: cropParams.width, height: cropParams.height, maxWidth: cropParams.width, maxHeight: cropParams.height, }) .toDataURL( "image/jpeg", cropParams.quality || false ? cropParams.quality : 100 ); setCropModalProps({ isOpen: true, isActionsDisabled: false, selectedImage: selectedImage, croppedImage: croppedImage, }); } }; return ( { setCropModalProps({ isOpen: false, isActionsDisabled: false, selectedImage: null, croppedImage: null, }); }} size={"7xl"} > Обрезать изображение

Управление

Тяните за углы что-бы выбрать область

Нажмите 2 раза на пустое место, что бы поменять режим выбора области на перемещение и обратно

Используйте колёсико мыши что-бы изменить масштаб

); };