diff --git a/jams-react-client/package-lock.json b/jams-react-client/package-lock.json index 9baf29269b219a4c7c638b3635a45da646137121..16af7abe46e47ccac1dc977aa27dc45b5cf0679b 100644 --- a/jams-react-client/package-lock.json +++ b/jams-react-client/package-lock.json @@ -12872,6 +12872,11 @@ "warning": "^3.0.0" } }, + "react-image-file-resizer": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/react-image-file-resizer/-/react-image-file-resizer-0.3.8.tgz", + "integrity": "sha512-54gA46Dmj2tSWuSGa0Gp6DBlur+MAnGh8q8eo/7hvh2bqoHmLo4mweJ4s0TUgANKllFAPD/5oLPK87M2AoOYTQ==" + }, "react-intl": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/react-intl/-/react-intl-5.0.2.tgz", diff --git a/jams-react-client/package.json b/jams-react-client/package.json index 2bac3e70f75e26781d3a0cf6b2183368071daf57..c1e72f944c6d5c6bbd73c3ab99337edb80eb20b5 100644 --- a/jams-react-client/package.json +++ b/jams-react-client/package.json @@ -28,6 +28,7 @@ "react-dom": "16.13.1", "react-easy-crop": "^3.1.1", "react-google-maps": "9.4.5", + "react-image-file-resizer": "^0.3.8", "react-intl": "5.0.2", "react-router-dom": "5.2.0", "react-scripts": "^3.4.3", diff --git a/jams-react-client/src/views/UserProfile/EditCreateUserProfile.js b/jams-react-client/src/views/UserProfile/EditCreateUserProfile.js index d9e48451853c5b25fa0e8a63596332a860a5c16c..e38bb8cbe83d772ff8742d0b873b1b1f3bc1166c 100644 --- a/jams-react-client/src/views/UserProfile/EditCreateUserProfile.js +++ b/jams-react-client/src/views/UserProfile/EditCreateUserProfile.js @@ -52,6 +52,8 @@ import FileCopyIcon from "@material-ui/icons/FileCopy"; import { CopyToClipboard } from "react-copy-to-clipboard"; +import Resizer from "react-image-file-resizer"; + import noProfilePicture from "assets/img/faces/no-profile-picture.png"; import axios from "axios"; @@ -271,12 +273,29 @@ export default function EditCreateUserProfile(props) { } }, []); + const resizeFile = (file, outputFormat) => + new Promise((resolve) => { + Resizer.imageFileResizer( + file, + 512, + 512, + "PNG", + 100, + 0, + (uri) => { + resolve(uri); + }, + outputFormat + ); + }); + const handleProfilePictureChange = (event) => { - setOriginalUploadedImage(URL.createObjectURL(event.target.files[0])); fileUpload(event) - .then((data) => { - setProfilePicture(data.base64); - setProfilePicturePreview("data:image/png;base64, " + data.base64); + .then(async (data) => { + const imageBase64 = await resizeFile(data, "base64"); + setProfilePicture(imageBase64); + setProfilePicturePreview("data:image/png;base64, " + imageBase64); + setOriginalUploadedImage(imageBase64); setOpen(true); }) .catch((error) => { @@ -443,6 +462,7 @@ export default function EditCreateUserProfile(props) { <div className={classes.cropContainer}> <Cropper image={originalUploadedImage} + cropSize={{ width: 300, height: 300 }} crop={crop} rotation={rotation} zoom={zoom}