Simple use case example: edit profile page - profile photo upload. User can upload huge photos from iPhone 7 10MB+, user wants to crop/resize image and may be do something else.
For client side, have you seen Dropzone.js? It's great for async drag/dropping and uploading files. You can autocrop them with a library like smartcrop.js.
I recently was working on an angular-laravel application. I used Angular Image upload plugin for size validations.
For the Cropping i used intervention. Its a really awesome image manipulation library with tons of features
They are pretty straight forward and simple to use.
I do not have an image upload, but if I had to do one with crop and resize:
I'm in love with Cloudinary. Doesn't matter what my user uploads - File gets stored at Cloudinary / S3 and when I present the image back to the user, I choose how to manipulate it - be it gravity on a face for a avatar or specifying max width or max height for a banner image or etc... As the user can't be trusted to upload a reasonably sized photo (dimensions or file size) being able to control it on the front / backend is a win / win.
Jon
ClojureScript Developer.
I used to upload files with https://github.com/mailru/FileAPI