what we do is simply uploading all images and logos at original size (as long as there is no clear CD regarding these) and then use an combination of image processing and caching to output the images in what ever form, size and format we need and want.
if something changes - all we have to do is clear the cache and change the parameters.
image paths will become something like this
<img class="img-fluid" src="/img/cache/250x80/resize?filename=img/logos/logo.png" />
Route::get('img/cache/{width}x{height}/{method?}', 'ImageProcessorController@response')->where([
'width' => '[0-9]+',
'height' => '[0-9]+'
]);
the controller uses https://github.com/Intervention/image to process the images
there's hardly any reason to resize and crop "logos" - but it's easy to refactor these later
I hope I understood the question correctly :D